加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring Boot配置处理器,前缀的重复@ConfigurationProp

发布时间:2020-12-15 01:28:00 所属栏目:大数据 来源:网络整理
导读:在Spring Boot应用程序中,我想使用具有相同前缀的@ConfigurationProperties注释来根据配置文件配置我的两个数据源.为什么Spring Boot配置处理器禁止它? gradle报告的错误是: ...:compileJava ... error: Duplicate `@ConfigurationProperties` definition

在Spring Boot应用程序中,我想使用具有相同前缀的@ConfigurationProperties注释来根据配置文件配置我的两个数据源.为什么Spring Boot配置处理器禁止它? gradle报告的错误是:

...
:compileJava ... error: Duplicate `@ConfigurationProperties` definition for prefix 'spring.datasource'

笔记:

>“Run As-> Spring Boot App”在STS中运行
>如果没有spring-boot-configuration-processor依赖,gradle构建工作(但警告使用@ConfigurationProperties时,建议在类路径中添加’spring-boot-configuration-processor’以生成配置元数据)

的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

repositories {
    mavenCentral()
    maven { url "https://repository.jboss.org/nexus/content/repositories/releases" }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile 'org.springframework.boot:spring-boot-configuration-processor:1.5.4.RELEASE'
    compile("com.h2database:h2")
}

application.properties

spring.datasource.driverClassName = org.h2.Driver
spring.datasource.username = sa
spring.datasource.password = sa

hello.Application

@SpringBootApplication
public class Application {

    public static void main(final String[] args) {
        final SpringApplication app = new SpringApplication(Application.class);
        app.setAdditionalProfiles("prod");
        app.run();
    }

    @Bean
    @Profile("dev")
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSourceDev() {
        return DataSourceBuilder
                .create()
                .url(generateDevUrl())
                .build();
    }

    @Bean
    @Profile("prod")
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSourceProd() {
        return DataSourceBuilder
                .create()
                .url(generateProdUrl())
                .build();
    }

}

提前致谢

最佳答案
我觉得你对这是如何工作感到困惑.代码应该保持不变.定义要在启动时加载的配置文件时,属性会更改.

application-dev.properties

spring.datasource.driverClassName = org.h2.Driver

spring.datasource.username = sa spring.datasource.password = sa
spring.datasource.url =

appilication-prod.properties

spring.datasource.driverClassName = org.h2.Driver
?spring.datasource.username = sa spring.datasource.password = sa
spring.datasource.url =

并且只有一个bean设置数据源.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读