spring - 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
解决方案
您可以定义一个 spring 配置文件(例如“db1”)并使用 注释oneDataSource()
bean 方法@Profile("db1")
,然后在您的应用程序命令行上激活此配置文件。
推荐阅读
- python - ImportError:无法导入名称
蟒蛇2.7 - automation - How to convert UFT test case to TOSCA
- java - [docusign]The page opened, but the signature could not be completed
- r - R包`labelled`和`sjlabelled`之间有什么关系?
- excel - 使用 VBA 查找/替换选定范围内具有零值的单元格(公式单元格)
- mongoose - 如何查找所有文档并将它们填充到猫鼬中?
- c++ - 仅使用绝对值对数组进行排序并在 C++ 中显示实际值
- c++ - 如何在 C++ 中打印目录
- aws-api-gateway - 用于 HTTPS 连接的 AWS API Gateway HTTP 代理
- facebook - 由 Facebook Graph API 发布后,视频帖子未显示在我的页面上