Spring的 @Autowired注解的详细解释
来源:互联网 发布:史丹利的寓言mac版 编辑:程序博客网 时间:2024/06/05 05:51
使用 @Autowired 注解进行装配,只能是根据类型进行匹配。@Autowired 注解可以用于 Setter 方法、构造函数、字段,甚至普通方法,前提是方法必须有至少一个参数。@Autowired 可以用于数组和使用泛型的集合类型。然后 Spring 会将容器中所有类型符合的 Bean 注入进来。@Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key。
@Autowired 标注作用于普通方法时,会产生一个副作用,就是在容器初始化该 Bean 实例的时候就会调用该方法。当然,前提是执行了自动装配,对于不满足装配条件的情况,该方法也不会被执行。
当标注了 @Autowired 后,自动注入不能满足,则会抛出异常。我们可以给 @Autowired 标注增加一个 required=false 属性,以改变这个行为。另外,每一个类中只能有一个构造函数的 @Autowired.required() 属性为 true。否则就出问题了。如果用 @Autowired 同时标注了多个构造函数,那么,Spring 将采用贪心算法匹配构造函数 ( 构造函数最长 )。
@Autowired 还有一个作用就是,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。
@Autowired(required=false) @Qualifier("ppp") public void setPerson(person p){}
@Qualifier 甚至可以作用于方法的参数 ( 对于方法只有一个参数的情况,我们可以将 @Qualifer 标注放置在方法声明上面,但是推荐放置在参数前面 ),举例如下:
@Autowired(required=false) public void sayHello(@Qualifier("ppp")Person p,String name){}我们可以在配置文件中指定某个 Bean 的 qualifier 名字,方法如下: <bean id="person" class="footmark.spring.Person"> <qualifier value="ppp"/> </bean>
如果没有明确指定 Bean 的 qualifier 名字,那么默认名字就是 Bean 的名字。通常,qualifier 应该是有业务含义的,例如 "domain","persistent" 等,而不应该是类似 "person" 方式。
我们还可以将 @Qualifier 标注在集合类型上,那么所有 qualifier 名字与指定值相同的 Bean 都将被注入进来。
<bean class="footmark.HelloWorld"> <qualifier type="MovieQualifier"> <attribute key="format" value="VHS"/> <attribute key="genre" value="Comedy"/> </qualifier> </bean> <bean class="footmark.HelloWorld"> <meta key="format" value="DVD"/> <meta key="genre" value="Action"/> </bean>
@Autowired 注解对应的后处理注册与前面相似,只需在配置文件中增加如下一行即可:
<context:annotation-config/>
@Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false)
- Spring的 @Autowired注解的详细解释
- spring的@Autowired注解
- Spring的Autowired和Resource注解的详细解读
- Spring的《注解装配》- @autowired
- springmvc非常详细的解释@Autowired
- spring的自动注解@Autowired配置
- Spring注解:@Autowired和@Resource的区别
- Spring 注解 @Resource和@Autowired的区别
- spring的注解使用,Autowired和Qualifier
- Spring @Resource、@Autowired的注解注入
- spring 注解@Resource 和 @Autowired的区别
- spring注解autowired与resource的区别
- Spring注解@Autowired 和@Resource的区别
- Spring的注解注入方式@Autowired,@Resource
- Spring注解@Autowired与@Resource的区别
- Spring注解@Autowired和@resource的区别
- spring基于注解的配置 @Required @Autowired
- Spring注解 @Resource和@Autowired的区别
- Android 调用系统功能实现图片选择器,你可能会遇到的问题汇总
- tmux快捷键记录
- 嵌入式学习方法
- 判断字符是否为空的一些方法理解
- SQL 基本查询语句
- Spring的 @Autowired注解的详细解释
- 掌握Angular2的依赖注入
- linux
- iOS 【令人头疼的 SDWebImage 缓存问题】
- Eclipse 在开发中使用到的快捷键
- 题目1011:最大连续子序列 九度OJ
- Java面试题全集(下)
- Jfinal 源码阅读方式
- Realm入门