注入一个定义好的bean。
将Spring容器中的bean自动的和我们需要这个bean的类组装在一起。
自动装配。
为了消除java代码中的set、get与bean属性中的property。
当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的bean,并自动注入到相应的地方去。
@Autowired(required = false)
- 如果Spring找不到属性,并且不想让Spring抛弃异常,而是显示null。
注意:
- Autowired在spring3.x之后,不推荐在属性上注入,推荐在构造方法上注入。
在构造方法上注入的好处:
- 依赖不可变:
- 通过构造方法注入依赖,在对象创建的时候就要注入依赖。
- 一旦对象创建成功,以后就只能使用注入的依赖而无法修改了。
- 通过set方法注入依赖,还可以通过set方法修改。
- 依赖不为空:
- 通过构造方法注入的时候,会自动检查注入的对象是否为空。
- 如果为空,则注入失败;否则,注入成功。
- 完全初始化:
- 当@Autowired注释一个接口
- 并且有多个实现类时,Spring不知道应该引用哪个实现类
-
@Resource
@Resource后面没有任何内容,默认通过那么属性去匹配bean,找不到再按type去匹配
- 指定了name或者type则根据指定的类型去匹配bean
- 任何一个不匹配都将报错
@Resource和@Autowired区别
- @Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配。
- @Autowired是Spring的注解,@Resource是J2EE的注解。
注意:
- Spring属于第三方,J2EE是java自己的东西。
- 建议使用@Resource注解,以减少代码和Spring之间的耦合。