JHipster и DBConfiguration - PullRequest
       16

JHipster и DBConfiguration

0 голосов
/ 07 февраля 2020

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

1 Ответ

1 голос
/ 09 февраля 2020

Вы можете определить профиль пружины (например, "db1") и аннотировать oneDataSource() метод bean с помощью @Profile("db1"), а затем активировать этот профиль в командной строке вашего приложения.

...