为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2018-08-18 20:46:22
在一个类中@Configurationpublic class MyConfig{    @bean(“d1”)      Datasource getDataSource(){         DruidDataSource d1 = new DruidDataSource();         ...        return d1;     } }然后另一个类中:@Configurationpublic class SecondConfig{    @Resource(name="d1")     Datasource dataSource;     ...           }发现不行,为何?
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

@Bean(name = "d1")Datasource getDataSource(){
    DruidDataSource d1 = new DruidDataSource();    // ...
    return d1;
}

你注解里有写标识吗,没有的话默认是返回类型首字母小写的字面值,比如: "dataSource"


查看完整回答
反对 回复 2018-08-19
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

你的 @Resource(name="d1") 指定了 bean 的 name 为 d1,这样在注入的 bean 的时候就回去寻找Datasource 类的名为 d1 的实现,然而发现 ioc 容器内并没有这个 bean。

现在有两种办法:
一是直接去掉 name=d1 的指定,改写为 @Resource,这样就会根据类型去匹配;
二是在声明 bean 的时候,指定这个 bean 的 name 为 d1,如 @Bean(name="d1")

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

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


查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 1804 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信