【发布时间】:2018-01-27 07:40:47
【问题描述】:
在 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 build 可以工作(但出现警告
When using @ConfigurationProperties it is recommended to add 'spring-boot-configuration-processor' to your classpath to generate configuration metadata)
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
你好.应用程序
@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();
}
}
提前致谢
【问题讨论】:
-
那些 bean 完全一样,你为什么需要那个配置?!
-
我的生产代码比较复杂。我把它简化得太多了。我刚刚更新了我的示例代码。
-
尽管如此,你看起来仍然在做你不应该做的事情。你为什么需要这个?恕我直言,主要问题是您有不同的方法来生成 URL。但这是你不应该在代码中但在配置中拥有的东西。
-
我遇到了同样的问题。这种设置使用 intelij 有效,但是一旦我尝试使用 gradle 编译它就会引发错误。 “错误:重复...”你有解决办法吗?
标签: java spring spring-boot spring-boot-configuration