@Resource @Autowired 的区别
时间: 2024-01-16 17:56:56 浏览: 86
1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf
@Resource 和 @Autowired 都是 Spring 框架中用于进行依赖注入的注解,它们之间的主要区别在于:
1. @Autowired 通过 byType 的方式进行注入,而 @Resource 通过 byName 的方式进行注入。也就是说,@Autowired 根据类型找到对应的 bean 进行注入,而 @Resource 根据名称找到对应的 bean 进行注入。
2. @Autowired 是 Spring 框架的注解,而 @Resource 是 JavaEE 的注解,也就是说,@Autowired 只能在 Spring 框架中使用,而 @Resource 可以在任何 JavaEE 容器中使用。
3. @Autowired 默认情况下要求依赖对象必须存在,如果找不到对应的 bean,会抛出 NoSuchBeanDefinitionException 异常;而 @Resource 默认情况下不要求依赖对象必须存在,如果找不到对应的 bean,则会将依赖对象设置为 null。
4. @Autowired 可以通过 @Qualifier 指定具体的 bean 名称进行注入,而 @Resource 则不能。
总的来说,@Autowired 更加常用,因为它可以根据类型进行注入,并且可以通过 @Qualifier 指定具体的 bean 名称进行注入。但是在某些情况下,@Resource 也有它的优势,比如在 JavaEE 容器中使用时。
阅读全文