我用spring创建了多个数据源设置。看起来是这样的:
application.yaml:
app:
db1:
jdbc-url:...
username:...
password:...
db2:...Config-class:
@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;在此之前一切都很好。现在,我想根据属性值的不同来包含p6spy,但是我得到了不同的错误。
第一种方法:
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看一下P6Spy文档,我认为我的方法已经足够了,但看起来还不够,我能做些什么来解决这个问题呢?我真的需要一路为我的7+ DataSources定义jndi/查找名称吗?
另外,当我在application.yaml中查找我的数据源属性时,我从IntelliJ那里得到了一个错误,它说“无法解决配置属性”,这很奇怪,因为该应用程序可以很好地处理所有没有p6spy的数据源。
发布于 2022-11-29 13:26:56
我正在研究一个类似的解决方案。我不能用弹簧引导自动配置所以..。首先要做的是为p6spy添加maven依赖项。然后,您需要一个psy.properties,您可以像这样将驱动程序添加到驱动程序列表中(DB2示例)
driverlist=com.ibm.db2.jcc.DB2Driver一开始我在使用P6DataSource时遇到了麻烦,所以我尝试了url +驱动程序方法来测试库配置。
当url +驱动程序方法对我起作用后,我回到了P6DataSource
https://p6spy.readthedocs.io/en/latest/integration.html
也许你可以试试
https://stackoverflow.com/questions/74361434
复制相似问题