@Resource 注解的作用和@AutoWired的对比

Posted 码上猿梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Resource 注解的作用和@AutoWired的对比相关的知识,希望对你有一定的参考价值。

今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @AutoWired效果一样,但也有一定的区别。

      两个注解都可以用来注入 bean ,@Resource 是JavaEE的注解,@AutoWired是Spring的注解,他俩写的地方是一样的,要么属性名上,要么 setter方法上,但是注入的依据有点不同 :

1 . @AutoWired 默认是按照类型进行装配的,而且要求被注入的 bean 必须存在,如果允许不存在的话,必须加上 required = false 的属性,如:

@AutoWired(required=false)
private UserDao userDaoImpl;

如果想要根据 bean 的 name 来进行装配,则需要指定 @Qualifier(“bean名字”),如:

@AutoWired
@Qualifier("userDaoImpl")
private UserDao userDaoImpl;

2 . @Resource 默认是按照名字进行装配的,不指定 bean 名字时会自动根据属性名进行注入,当找不到默认的名字的bean时就会根据类型去注入;但是如果指定了 name 属性,则按照指定的 bean 的 name进行注入,不会再根据类型去注入了,如:

//默认按属性名注入
@Resource
private UserDao userDaoImpl;


//按照指定的 bean的 name注入
@Resource(name="userDaoImpl")
private UserDao userDaoImpl;

以上是关于@Resource 注解的作用和@AutoWired的对比的主要内容,如果未能解决你的问题,请参考以下文章

解决自定义Shiro.Realm扩展类不能用注解(@Resource或@Autowire)自动装配的问题

@Autowired和@Resource装配

spring的注解@Component@Bean,@Autowire一遍搞定

@Autowired, @Resource, @Inject 三个注解的区别你懂吗?别再乱用了!

@Resource 注解的作用和@AutoWired的对比

java spring component与autowire区别