阐述@autowired注解,@Autowired和@Resource
如何解决写爬虫IP受阻的问题?立即使用。
相关:《Java视频教程》
Spring不仅支持自己的@Autowired注释,还支持JSR-250规范定义的几种注释。如@Resource、@PostConstruct和@PreDestroy
1、@Autowired
由Spring提供,仅由byType注入
2、@Resource
由J2EE提供,默认情况下由byName自动注入。
@Resource有两个重要的属性:名称和类型。
Spring @Resource注释的name属性被解析为bean的名称,type属性被解析为bean的类型。因此,如果使用name属性,则使用byName的自动注入策略,而type属性使用byType的自动注入策略。如果既没有指定name属性也没有指定type属性,那么将通过反射机制使用byName自动注入策略。
@资源程序集序列:
(1)如果指定了名称和类型,那么从Spring上下文中为assembly找到唯一匹配的bean,如果没有找到,则抛出异常。
(2)如果指定了名称,将在Spring上下文中找到具有匹配名称(id)的bean进行组装,如果找不到将抛出异常。
(3)如果指定了type,则从Spring上下文中找到类型匹配的唯一bean进行组装。如果没有找到多个beans,将会抛出异常。
(4)如果既没有指定名称也没有指定类型,则自动按名称进行组装。如果没有匹配,它将回到一个原始类型进行匹配,如果有匹配,它将自动组装。
@Resource等同于@Autowired,只是@Autowired自动注入byType。
3、使用区别
(1)@Autowired和@Resource都可以用来组装bean,可以写在字段或者setter方法上。
(2)@Autowired默认按类型装配.默认情况下,依赖对象必须存在。如果想要允许null值,可以将其required属性设置为false。如果要使用名称装配,可以用结合@Qualifier注解。
(3)@Resource,默认按照名称用于装配。该名称可以由name属性指定。如果未指定名称属性,则当注释被写入字段上时,默认取字段名用于名称查找。如果注释是在setter方法上写的,默认情况下属性名用于assembly。找不到与名称匹配的bean时在才按照类型时组装。但是,需要注意的是,一旦指定了name属性,它将只根据名称进行组装。
建议在字段上使用@Resource注释,这样就不用写setter方法了,而且这个注释属于J2EE,减少了和Spring的耦合。
@资源评论
更多编程知识请访问:编程教学!上面的@autowired和@resource标注有什么区别?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。