在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ @Resource可以注入@Bean注解的bean嗎?

@Resource可以注入@Bean注解的bean嗎?

在一個類中

@Configuration
public class MyConfig{

    @bean(“d1”) 
    Datasource getDataSource(){
        DruidDataSource d1 = new DruidDataSource();
        ...
        return d1;
    }
}

然后另一個類中:

@Configuration
public class SecondConfig{
    @Resource(name="d1")
    Datasource dataSource;
    ...
    
    

}

發(fā)現(xiàn)不行,為何?

回答
編輯回答
離魂曲

你的 @Resource(name="d1") 指定了 bean 的 name 為 d1,這樣在注入的 bean 的時候就回去尋找Datasource 類的名為 d1 的實現(xiàn),然而發(fā)現(xiàn) ioc 容器內(nèi)并沒有這個 bean。

現(xiàn)在有兩種辦法:
一是直接去掉 name=d1 的指定,改寫為 @Resource,這樣就會根據(jù)類型去匹配;
二是在聲明 bean 的時候,指定這個 bean 的 name 為 d1,如 @Bean(name="d1")

我記得默認使用 @Bean 注解生成的 bean 的名稱和方法名同名,也就是你可以

    @bean 
    Datasource d1(){
        DruidDataSource d1 = new DruidDataSource();
        ...
        return d1;
    }
2017年5月13日 19:48
編輯回答
尤禮
@Bean(name = "d1")
Datasource getDataSource(){
    DruidDataSource d1 = new DruidDataSource();
    // ...
    return d1;
}

你注解里有寫標識嗎,沒有的話默認是返回類型首字母小寫的字面值,比如: "dataSource"

2018年8月16日 07:23