@Required(不常用)

@Autowired(常用)

下面用例子解释以上内容:

@Autowired注解的三种方式如下,第一种是直接在属性名上加注解,这样就可以不用在写set方法进行注入,这种方式与set方式作用一样;第二种是在set方法上加注解;第三种是在构造器上加注解

测试代码如下:

xml配置文件正常即可:

图解:可以在当前类中,声明ApplicationContext的引用,然后可以用@Autowired进行注解,这时候可以在当前类中得到这个容器,并且可以使用这个容器了

图解:

数组也就是Set或List等,提供所有特定类型的bean是指:当Set中声明MovieCatalog时,当前的ApplicationContext中所有是Set泛型中声明类型的这种bean或它的子类,都可以被@Autowired注解,把这些bean的实例放到当前的集合当中。

这里的key也就是所有bean的id,value也就是bean的对象,同时我们希望放在Map或者是Set和List的集合中,这种bean的实例是有顺序的,可以实现以上接口来实现。

例子如下:

interface的两个实现类:

调用类实现:

 @Component
public class BeanInvoker { //可以利用@Autowired注解,将两个实现类的实例同时注入list或map中
//list中会被注解进来bean的实例,只有bean的对象
@Autowired
private List<BeanInterface> list; //map中会被注解进来bean的id和实例,bean的id就是class的类名第一个字母小写
@Autowired
private Map<String, BeanInterface> map; //将@Qualifier与@Autowired一起用,可以指定注入的某一个实现类的实例
@Autowired
@Qualifier("beanImplOne")
private BeanInterface beanInterface; public void say() {
if(null != list && 0 != list.size()) {
System.out.println("list...");
for(BeanInterface bean:list) {
System.out.println(bean.getClass().getName());
}
}
else {
System.out.println("List<BeanInterface> list is null....");
} System.out.println(); if(null != map && 0 != map.size()) {
System.out.println("map...");
for(Map.Entry<String, BeanInterface> entry:map.entrySet()) {
System.out.println(entry.getKey() + "......" + entry.getValue().getClass().getName());
}
}
else {
System.out.println("Map<String, BeanInterface> map is null...");
} System.out.println(); if(null != beanInterface){
System.out.println(beanInterface.getClass().getName());
}
else {
System.out.println("beanInterface is null...");
}
}
}

测试类:

注释:当某个接口有多个实现类时,可以将@Qualifier与@Autowired一起用, 指定应该注入的对象的实例。@Qualifier中应该是要指定注入的bean的id

打印结果如下:

Bean装配之@Autowired注解的更多相关文章

  1. Spring入门篇——第4章 Spring Bean装配(下)

    第4章 Spring Bean装配(下) 介绍Bean的注解实现,Autowired注解说明,基于java的容器注解说明,以及Spring对JSR支持的说明 4-1 Spring Bean装配之Bea ...

  2. Spring中@Autowired注解与自动装配

    1 使用配置文件的方法来完成自动装配我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. ...

  3. Spring Ioc源码分析系列--@Autowired注解的实现原理

    Spring Ioc源码分析系列--@Autowired注解的实现原理 前言 前面系列文章分析了一把Spring Ioc的源码,是不是云里雾里,感觉并没有跟实际开发搭上半毛钱关系?看了一遍下来,对我的 ...

  4. Spring课程 Spring入门篇 4-3 Spring bean装配(下)之Autowired注解说明2 集合运用

    课程链接: 本节主要讲了以下几块内容 1 注解相关解析 2 代码演练 集合for循环的使用 2.1 list集合应用 2.2 map集合应用 2.3 集合排序(只对list有效,对map无效(list ...

  5. Spring bean依赖注入、bean的装配及相关注解

    依赖注入 Spring主要提供以下两种方法用于依赖注入 基于属性Setter方法注入 基于构造方法注入 Setter方法注入 例子: public class Communication { priv ...

  6. [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. 使用Spring的JavaConfig 和 @Autowired注解与自动装配

    1 JavaConfig  配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springf ...

  8. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  9. Spring学习十----------Bean的配置之Autowired注解实现

    © 版权声明:本文为博主原创文章,转载请注明出处 @Required -@Required注解适用于bean属性的setter方法 -这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在b ...

随机推荐

  1. CSP201409-1:相邻数对

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  2. argos3-simulator

    如何修改控制器: CVector2: class CVector2 { friend class CRotationMatrix2; friend class CTransformationMatri ...

  3. 以太坊remix IDE安装步骤

    Remix 以太坊Solidity IDE搭建与初步使用 以太坊: 因为以太坊为开源社区,虽然东西很优秀,但是组件十分的杂乱,因此首先简单介绍下以太坊的一些常用组件: Geth: Geth是由以太坊基 ...

  4. redis字符串基本操作

    redis之字符串类型: 字符串类型是redis中最基本的数据类型,同时它也是memcached中仅有的数据类型.redis字符串类型的键能存储任何形式的字符串,包括二进制数据,例如,存储json化的 ...

  5. 字面值常量&&转义序列

    字面值常量举例: 字面值常量的分类 示例 备注 整型 42.024(八进制数).0x23(十六进制) short类型没有对应的字面值 浮点型 3.14.3.14E2(指数) 默认类型是double 字 ...

  6. ubutu下source命令问题(复制)

    最近一段时间在使用Bash on Ubuntu on Windows做shell脚本调试时发现在脚本中使用source时会报错,上网查了下才了解到原来是在Ubuntu中使用的并不是bash,而是使用 ...

  7. 【转】C++ const用法 尽可能使用const

    http://www.cnblogs.com/xudong-bupt/p/3509567.html C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不 ...

  8. PhoneGap & HTML5 学习资料网址

    PhoneGap 与 Application Cache应用缓存  http://www.html5cn.org/forum.php?mod=viewthread&tid=40272 加速We ...

  9. 完全删除SQL server 2008

    一.在控制面板卸载程序 二.点击删除 遇到这种情况则重新启动计算机,之后依次按步骤进行即可. 三.卸载一些相关组件,方法与之类似 四.删除磁盘里的默认文件(一般数据库默认安装在C盘) 路径:" ...

  10. 【版本控制】VisualSVN Server更改SVN版本库存放路径的方法

    最近也玩起了SVN软件版本管理,在本机上安装了VisualSVN Server+TortoiseSVN,感觉还不错吧.但是,版本库存在哪里呢?在安装VisualSVN Server时,已经默认设置了, ...