1)@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配; 2)@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了; Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。
- 来源不同 @Autowired是Spring的注解,而@Resource是JSR-250规范中的注解,由J2EE提供。
- 注入方式不同 @Autowired按照类型(byType)进行自动装配,而@Resource默认按照名称(byName)进行自动装配。
- 适用范围不同 @Autowired只能注入Spring容器中的bean,而@Resource可以注入任意Java对象。
- 属性不同 @Autowired没有指定name属性时,它会默认使用属性名作为bean的名称来进行注入;而@Resource必须指定name属性,它使用名称来进行注入。 综上所述,两个注解的主要区别在于来源、注入方式、适用范围和属性。在实际开发中,可以根据具体情况选择使用哪个注解。