首页 > 代码库 > @Resource 注解的作用【和@AutoWired的对比】

@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进行注入,不会再根据类型去注入了,如:

//默认按属性名注入@Resourceprivate UserDao userDaoImpl;//按照指定的 bean的 name注入@Resource(name="userDaoImpl")private UserDao userDaoImpl;

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