@Autowired 和 @Resource 都是 Spring 常用的用来进行依赖注入的注解,二者都可以自动注入 bean,但在一些细节方面存在区别。
- 实现方式不同
@Autowired 是 Spring 的注解,而 @Resource 是 Java EE 的注解,前者只能在 Spring 容器中使用,后者则可在 Java EE 应用中使用。
- 针对属性类型不同
使用 @Autowired 注解时,Spring 会根据类型(byType)自动装配被注入的 bean 实例,如果有多个相同类型的 bean,可以通过 @Qualifier 指定需要注入的 bean 名称。
使用 @Resource 注解时,先根据名称 (byName) 进行注入,若名称不存在,则根据类型 (byType) 进行注入。
- 参数类型不同
@Autowired 注解的参数是 required,表示该属性是否必须被注入,如果设置为 true,则必须注入成功,否则将抛出异常。
@Resource 注解的参数是 name,表示需要注入的 bean 名称,默认值为 “”,如果没有指定名称,则自动使用属性名称作为 bean 名称进行注入,如果找不到对应名称的 bean,则抛出异常。
总的来说,Autowired 是一种更加强大、灵活的注入方式,在使用上较为简单方便,常常用于在 Spring 应用中进行 bean 依赖注入;而 Resource 是一种更加标准化的注入方式,在使用时需要注意一些细节,常常用于在 Java EE 应用中进行 bean 依赖注入。