我正在尝试使用依赖jar创建一个Spring Boot应用程序,该jar已经配置了多个数据源的context.xml。
在我的Spring启动应用程序中,我将@ImportResource(“context.xml”)添加到@Configuration类中,现在我得到一个异常, “没有定义[javax.sql.DataSource]类型的限定bean:期望的单个匹配bean但找到4:XXXDataSource,YYYDataSource,ZZZDataSource,aaaaDataSource”。
我在Spring Boot中阅读了有关多个数据源的文档,但无法解决此问题。不确定,我如何配置我的类,因为我不能更改依赖jar来改变数据源的配置方式。
请帮忙!
答案 0 :(得分:0)
您可以使用数据源bean上的“Primary”属性使您的自动装配默认选择它。
<bean primary="true|false"/>
如果您使用的是Java配置,请改用@Primary注释。
@Component
public class FooService {
private FooRepository fooRepository;
@Autowired
public FooService(FooRepository fooRepository) {
this.fooRepository = fooRepository;
}
}
@Component
public class JdbcFooRepository {
public JdbcFooService(DataSource dataSource) {
// ...
}
}
@Primary
@Component
public class HibernateFooRepository {
public HibernateFooService(SessionFactory sessionFactory) {
// ...
}
}
如果仍然无法解决问题,您可以命名bean,并在java类中使用@Qualifier注释,或者在Spring XML配置中使用“ref”属性。
https://spring.io/blog/2014/11/04/a-quality-qualifier
@Autowired
@Qualifier( "ios") // the use is unique to Spring. It's darned convenient, too!
private MarketPlace marketPlace ;
如果您需要jar中的一个数据源并且无法修改配置,而不是从jar中导入xml,请将您需要的配置复制到您自己的本地spring上下文配置中。