@resource和@autowired,@Resource 和 @Autowire 的区别

  @resource和@autowired,@Resource 和 @Autowire 的区别

  如何解决写爬虫IP受阻的问题?立即使用。

  相关:《Java视频教程》

  Spring 3中经常使用@Autowired和@Resource。x代表装配。

  不知道这两种标注有什么区别?

  相同点:

  @Resource相当于@Autowired,可以标记在字段或属性的setter方法上。

  不同点:

  (1)提供者:@Autowired由org . Spring framework . beans . factory . annotation . auto wired提供,换句话说,由Spring提供;@Resource由javax.annotation.Resource提供,由J2EE提供,需要JDK1.6及以上版本。

  (2)注入方式:@Autowired只根据byType注入;@Resource默认自动按byName注入,也可以按byType注入;

  (3)属性:@Autowired按类型组装依赖对象。默认情况下,它要求依赖对象必须存在。如果允许空值,可以将其required属性设置为false。如果我们想使用assembly by name,我们可以将它与@Qualifier注释一起使用。@Resource有两个重要的属性:名称和类型。name属性指定byName。如果没有指定name属性,当注释被标记在字段上时,默认情况下,字段名被用作bean名称,以查找依赖对象。当在属性的setter方法上标记了注释时,默认情况下将属性名作为bean名来查找依赖对象。注意,如果没有为@Resource指定name属性,并且根据默认名称找不到依赖对象,那么@Resource注释将退回到按类型组装。但是一旦指定了name属性,就只能通过名称来组装。

  @Resource装配顺序

  1.如果指定了name和type,那么将从Spring上下文中为assembly找到唯一匹配的bean,如果没有找到,将抛出异常。

  2.如果指定了name,将从程序集的上下文中找到具有匹配名称(id)的bean,如果找不到,将引发异常。

  3.如果指定了type,将从程序集的上下文中找到具有类型匹配的唯一bean。如果没有找到多个beans,将会抛出一个异常。

  4.如果既没有指定名称也没有指定类型,则根据byName方法自动进行组装;如果不匹配,则回到原始类型进行匹配,如果匹配,则自动组装;

  建议对字段使用@Resource注释,这样就不用写setter方法了。而这个注释属于J2EE,减少了与Spring的耦合,让代码看起来更优雅。

  更多编程知识请访问:编程学习网站!@autowired和@resource有什么区别?更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: