首页 > 解决方案 > JHipster 和 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();
    }
...

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

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

    @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

标签: springspring-bootspring-data-jpaspring-datajhipster

解决方案


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


推荐阅读