Spring 2.x多数据源和p6spy

inn6fuwd  于 2022-12-04  发布在  Spring
关注(0)|答案(1)|浏览(212)

我用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的情况下与所有数据源一起工作得很好。

vjrehmav

vjrehmav1#

我正在使用一个类似的解决方案。我不能使用spring Boot autoconfiguration,所以......首先要做的是为p6spy添加maven依赖项。然后,您需要一个psy.properties,您可以在其中将驱动程序添加到driverlist,如下所示(DB2示例)

driverlist=com.ibm.db2.jcc.DB2Driver

一开始我在使用P6DataSource时遇到了麻烦,所以我尝试了URL +驱动程序的方法来测试库配置。
一旦url + driver方法对我起作用,我就返回到P6DataSource
https://p6spy.readthedocs.io/en/latest/integration.html
也许你可以试试

相关问题