@Autowired和@Resource注解的区别主要体现在以下五个方面:1.来源不同;2.注入方式不同;3.默认处理方式不同;4.属性名不同;5.兼容性不同。从整体上来看,这两个注解虽然都用于实现依赖注入,但是各自的侧重点和使用情况有所不同。
1.来源不同
@Autowired是Spring框架的注解,用于自动装配bean;而@Resource则是来自J2EE的注解,是JSR-250标准的一部分,用于资源的注入。
2.注入方式不同
@Autowired默认按类型装配(这个注解是属于spring的),默认情况下要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用名称装配可以结合@Qualifier注解进行使用;
而@Resource默认按照名称装配,如果没有指定name属性,当注解写在字段上时,默认取字段名作为bean名称寻找依赖对象,当注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时,会回退为原始类型装配。可以通过name属性进行指定。
3.默认处理方式不同
如果@Autowired找不到匹配的bean进行装配时,会抛出异常。而@Resource则默认是按照名称进行装配的,如果找不到名称匹配的bean则会回退为按类型装配。
4.属性名不同
@Autowired没有属性名,它按照类型来自动注入;而@Resource则有一个name属性,可以通过name属性来明确指定注入的bean。
5.兼容性不同
@Autowired只能应用到spring框架,而@Resource则由于是J2EE的一部分,因此兼容性更好,可以在所有支持JSR-250的环境下使用。
延伸阅读:
@Autowired和@Resource是什么?
1.@Autowired是什么
@Autowired是Spring框架提供的注解,用于实现依赖注入。它可以用于字段、构造器、setter方法和配置方法上。
2.@Resource是什么
@Resource是J2EE提供的注解,是JSR-250标准的一部分,用于资源的注入。它可以用于字段和setter方法上,用于注入任何支持的资源类型的bean。
文章标题:autowired和resource注解的区别,发布者:飞飞,转载请注明出处:https://worktile.com/kb/p/52272