Spring 注解配置Bean(2)

@Resource装配顺序:
  step1:如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
  step2:如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
  step3:如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
  step4:如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

private Computer computer; @Resource private Phone phone; //插入类型为Phone的对象 @Resource //注入bean对象 public void setComputer(Computer computer) { this.computer = computer; }

8、@Autowired

  基本等价于 @Resource。@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用
  其导入包:import org.springframework.beans.factory.annotation.Autowired;

private Computer computer; @Autowired private Phone phone; //插入类型为Phone的对象 @Autowired //注入bean对象 public void setComputer(Computer computer) { this.computer = computer; }

9、@Resource与@Autowired的区别

  @Resource的作用相当于@Autowired,只不过@Autowired默认按照byType自动注入。@Resource默认按 byName自动注入
注:
  构造器注入时,只能使用@Autowired。
  Set注入时,可以使用@Autowired或者@Resource(推荐)。

容器中存在多个同类型的对象时,若@Autowired放在setXX方法前,那么只依据类型(ByType)去匹配。若想使@Autowired 按照byName匹配,需与@Qualifier("")连用。

@Autowired @Qualifier("computer") private Computer computer;

  @Resource放在setXXX方法前,会先依据XXX(默认ByName)去匹配,可以设置是否按照byName或者byType匹配。

@Resource(name="phone") //等价于 @Resource,根据byName匹配。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c94faeb61c77cd98dc8eed641508a335.html