在一个类中@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"
。
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; }
添加回答
举报
0/150
提交
取消