Может быть, странный вопрос. У меня есть 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