我用spring-boot创建了一个多数据源设置,如下所示:
application.yaml:
app:
db1:
jdbc-url:...
username:...
password:...
db2:...
配置类:
@Configuration(proxyBeanMethods = false)
public class DataSourceConfig {
@Bean(name = "db1")
@Primary
@ConfigurationProperties("app.db1")
public DataSource statusServiceDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "db2")
@ConfigurationProperties("app.db2")
public DataSource identifierResolverServiceDataSource(){
return DataSourceBuilder.create().build();
}
我使用数据源的方式如下:
@Autowired
@Qualifier("db2")
DataSource db2;
在此之前,一切都工作正常。现在我想根据属性的值包括p6 spy,但我得到了不同的错误。
第一种方法:
return new P6DataSource(DataSourceBuilder.create().build());
导致:
java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
第二种方法:
return DataSourceBuilder.create().type(P6DataSource.class).build();
导致:
P6DataSource: no value for Real Data Source Name, cannot perform jndi lookup
查看P6 Spy文档时,我认为我的方法已经足够了,但看起来还不够。我该怎么做才能解决这个问题?我真的必须为我的7个以上的数据源定义jndi/lookUp名称吗?
此外,当在application.yaml中查找我的数据源属性时,我从IntelliJ收到一个错误,说“无法解析配置属性”,这很奇怪,因为应用程序在没有p6 spy的情况下与所有数据源一起工作得很好。
1条答案
按热度按时间vjrehmav1#
我正在使用一个类似的解决方案。我不能使用spring Boot autoconfiguration,所以......首先要做的是为p6spy添加maven依赖项。然后,您需要一个
psy.properties
,您可以在其中将驱动程序添加到driverlist,如下所示(DB2示例)一开始我在使用P6DataSource时遇到了麻烦,所以我尝试了URL +驱动程序的方法来测试库配置。
一旦url + driver方法对我起作用,我就返回到P6DataSource
https://p6spy.readthedocs.io/en/latest/integration.html
也许你可以试试