spring应用手册-IOC(注解实现)-(20)-@Resource注解

    科技2025-05-04  12

    戴着假发的程序员出品 抖音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就会报错,不会再按照类型查找。

    Processed: 0.014, SQL: 8