戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
@Resource注解
spring应用手册(第二部分)
@Resource是 JSR-250标准。可以注解在bean的成员变量或者setter方法上。主要也是用于通知spring当前的属性应该注入哪个bean。
@Resource和@Autowired不同的是@Resource会首先按照名称注入,如果名称找不到才会按照类型注入。
我们可以通过@Resource的属性name指定要注入的bean的beanName,当然如果不指定name属性的话spring或自动根据属性或者setter方法找到对应的beanName例如:
/**
* @author 戴着假发的程序员
*
* @description
*/
@Component
public class ArticleService {
@Resource
private IArticleDAO articleDAO;
//...
}
上面的程序中spring生成的beanName默认是"artilceDAO"。
/**
* @author 戴着假发的程序员
*
* @description
*/
@Component
public class ArticleService {
private IArticleDAO articleDAO;
@Resource
public void setAuthorDAO(IArticleDAO articleDAO){
this.articleDAO = articleDAO;
}
//...
}
上面的程序中spring生成的beanName默认是"authorDAO"。
当然我们可以指定名称:
/**
* @author 戴着假发的程序员
*
* @description
*/
@Component
public class ArticleService {
@Resource(name="articleDAO_oracle")
private IArticleDAO articleDAO;
//...
}
这是spring就会查找beanName为articleDAO_oracle的bean注入。
几个要注意的问题:
[1]@Resource默认会按照名称查找容器中的bean,如果名称找不到就会按照类型查找,如果这时同种类型的bean在容器中出现多个,一样会抛出异常。
[2]如果我们显式的指定了@Resource的name属性,那么spring如果通过这个名字找不到对应的bean就会报错,不会再按照类型查找。