Spring 与 @Resource注解

   Spring 中支持@Autowired注解,能够实现bean的注入。同时,Spring 也支持@Resource注解,它和@Autowired类似,都是实现bean的注入。该注解存在javax.annotation.Resource包中。

  使用方法如下:

  

1 import javax.annotation.Resource;
2 public class A{
3 
4   @Resource
5   private B b;     
6    
7 }

  其中@Resource有两个参数会在spring配置中进行准确的查找bean,分别是"name"和"type",name属性是bean的名字,即设置的id;

type是一个class类型,即该bean的类型。如果找不到则会抛出异常。默认情况缺省设置name,则会按照bean的id属性查找。设置格式

@Resource(name="b",type="B").

==============================================

补充:

如果Resource注解的是一个接口,但此接口有多个实现类的话,以上方法是不行的,当找到多个实现类的时候,spring会报错。有两种使用情况:

1.需要这个接口的其中一个实现类。如果要指定某一个实现类,可以再Resource注解中指定一个name, 该name就是实现类的id。

2. 需要这个接口的多个实现类,此时不能在属性上加注解了,而是要在对应的set方法中注入,set方法参数为具体的接口实现类。示例代码如下:

 1 1、采用字段名称,则会注入失败
 2 @resource
 3 private IUserDao userDao;
 4  
 5 2、采用set方法注入,则可以注入UserDao1
 6 @resource
 7 public void setUserDao(UserDao1 userDao)
 8 //注入UserDao2 
 9 @resource
10 public void setUserDao(UserDao2 userDao)
原文地址:https://www.cnblogs.com/bigbang92/p/4031641.html