【问题标题】:JHipster and DBConfigurationJHipster 和 DBConfiguration
【发布时间】:2020-05-23 19:13:45
【问题描述】:

也许是一个奇怪的问题。 我的注册表中有 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();
    }
...

在某些情况下,我需要无法/拆除两个连接之一。所以我将其从注册表中删除。

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

    @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 spring-boot spring-data-jpa spring-data jhipster


    【解决方案1】:

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

    【讨论】:

    • 好主意。我使用它并在 oneDB 的所有数据、存储库、服务中指定了配置文件,我看到它成功了!!!
    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多