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