JHipster and DBConfiguration



也许是一个奇怪的问题。 我的注册表中有 2 个 DBConnection,并且运行良好,连接、选择、插入、更新、删除。

connectionONE:
datasource:
password: xxxx
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:oracle:thin:@YYYY
username: zzzzz
connectionTWO:
datasource:
hikari:
auto-commit: false
poolName: Hikari
password: aaaaaa
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:postgresql:bbbbbbbbbb
username: ccccc

对于它们中的每一个,我都有一个读取配置属性的@Configuration类

@Bean
@ConfigurationProperties("connectionONE.datasource")
public DataSourceProperties oneDataSourceProperties() {
return new DataSourceProperties();
}
...

在某些情况下,我需要取消/拆除 2 个连接中的一个。所以我从注册表中删除了它。

如何修改我的配置类?现在我遇到异常,微服务没有启动并尝试捕获异常:

@Bean
@ConfigurationProperties("configurationONE.datasource")
public DataSource oneDataSource() {
	DataSourceBuilder<?> dsb = null;
	try {
		dsb = oneDataSourceProperties().initializeDataSourceBuilder();
	} catch (Exception ex) {
		System.out.println("NO Configuration");
	}
	if (dsb != null)
		return dsb.build();
return null;
}

但是以这种方式,我提出了另一个例外,可能是由return null引起的:

Caused by: java.lang.IllegalArgumentException: ExistingValue must be an instance of javax.sql.DataSource
	at org.springframework.util.Assert.isTrue(Assert.java:136)
	at org.springframework.boot.context.properties.bind.Bindable.withExistingValue(Bindable.java:161)
	at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.bind(ConfigurationPropertiesBindingPostProcessor.java:99)
	at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:89)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:414)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
	... 173 common frames omitted

您可以定义一个 spring 配置文件(例如"db1"(并使用@Profile("db1")注释oneDataSource()bean 方法,然后在应用程序命令行上激活此配置文件。

最新更新