注入一个定义好的bean。
将Spring容器中的bean自动的和我们需要这个bean的类组装在一起。
自动装配。
为了消除java代码中的set、get与bean属性中的property。
当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的bean,并自动注入到相应的地方去。

@Autowired(required = false)

  • 如果Spring找不到属性,并且不想让Spring抛弃异常,而是显示null。

注意:

  1. Autowired在spring3.x之后,不推荐在属性上注入,推荐在构造方法上注入。
  2. 5cbdeea52ef7ba1235a21b6213d3e93.png

在构造方法上注入的好处:

  1. 依赖不可变:
    1. 通过构造方法注入依赖,在对象创建的时候就要注入依赖。
    2. 一旦对象创建成功,以后就只能使用注入的依赖而无法修改了。
    3. 通过set方法注入依赖,还可以通过set方法修改。
  2. 依赖不为空:
    1. 通过构造方法注入的时候,会自动检查注入的对象是否为空。
    2. 如果为空,则注入失败;否则,注入成功。
  3. 完全初始化:
    1. 由于获取到了依赖对象(依赖对象是初始化之后的),并且调用了要初始化组件的构造方法,因此最终拿到的就是完全初始化的对象了。

      @Qualifier(“XXX”)

  • 当@Autowired注释一个接口
  • 并且有多个实现类时,Spring不知道应该引用哪个实现类
  • 可以使用@Qualifier解决,参数是实现类名

    @Resource

  • @Resource后面没有任何内容,默认通过那么属性去匹配bean,找不到再按type去匹配

  • 指定了name或者type则根据指定的类型去匹配bean
  • 任何一个不匹配都将报错

    @Resource和@Autowired区别

  1. @Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配。
  2. @Autowired是Spring的注解,@Resource是J2EE的注解。

注意:

  • Spring属于第三方,J2EE是java自己的东西。
  • 建议使用@Resource注解,以减少代码和Spring之间的耦合。

https://www.cnblogs.com/xrq730/p/5313412.html