繁体   English   中英

@ConfigurationProperties 两个不同 bean 上 DB 的相同前缀

[英]@ConfigurationProperties same prefix for DB on two different beans

在我的应用程序属性中,我有

spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.validation-timeout=3000
spring.datasource.hikari.leak-detection-threshold=90000
spring.datasource.hikari.max-lifetime=3600000

我有两个数据源将使用相同的配置属性

    @ConfigurationProperties(prefix = "spring.datasource.hikari")
    @Bean
    public HikariDataSource dataSource() throws Exception {
    @ConfigurationProperties(prefix = "spring.datasource.hikari")
    @Bean
    public HikariDataSource altDataSource() throws Exception {

一周前它还在工作,但现在我在清理和构建时遇到错误:

> Task :compileJava
error: Duplicate `@ConfigurationProperties` definition for prefix 'spring.datasource.hikari'
    public HikariDataSource altDataSource() throws Exception {

我在这里阅读了一些不同的解决方案,但是除了编辑我的属性文件之外还有其他解决方法吗? 因为这是一周前的工作,这可能是 IDE 问题吗?

使用 Spring 配置文件喜欢这个

class SomeOtherProfileConfig extends MyConfig {
}

@Profile("MyProfile")
@Bean(initMethod = "init", name = "MyConfig")
@ConfigurationProperties(prefix = "config")
public MyConfig config() {
    MyConfig config = new MyConfig();
    return config;
}

@Profile("!MyProfile")
@Bean(initMethod = "anotherInit", name = "MyConfig")
@ConfigurationProperties(prefix = "config")
public SomeOtherProfileConfig myConfig() {
    SomeOtherProfileConfig config = new SomeOtherProfileConfig();
    return config;
}

你应该这样做

会将这两个@Bean方法合二为一,使用 Environment 检查spring.datasource.hikari.refresh属性的值,然后根据需要设置 Hikari 系统属性

来源: https://github.com/spring-projects/spring-boot/issues/6781#issuecomment-857624340

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM