Java Spring引导配置和配置属性存在问题

Java Spring引导配置和配置属性存在问题,java,spring-boot,kotlin,Java,Spring Boot,Kotlin,我有一个像下面这样的班级 @Configuration @ConfigurationProperties(prefix = "myConfig") class MyConfig { lateinit var baseUrl: String var connectionTimeout: Int = 2000 var defaultMaxHotels: Int = 10000 var clientId: String = "my-domain" var app

我有一个像下面这样的班级

@Configuration
@ConfigurationProperties(prefix = "myConfig")
class MyConfig {
    lateinit var baseUrl: String
    var connectionTimeout: Int = 2000
    var defaultMaxHotels: Int = 10000
    var clientId: String = "my-domain"
    var applicationId: String = "my-app"
    var failureRateThreshold: Float = 20f
    var windowSize: Int = 100
    var minNumberOfCalls: Int = 100
    var waitDurationInOpenState: Long = 30_000

    @Bean
    fun myCircuitBreaker(): CircuitBreaker {

        var configuration = CircuitBreakerConfig.custom().failureRateThreshold(failureRateThreshold)
                            .slidingWindow(windowSize, minNumberOfCalls, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
                            .waitDurationInOpenState(Duration.ofMillis(waitDurationInOpenState))
                            .enableAutomaticTransitionFromOpenToHalfOpen()
                            .build()

        val registry = CircuitBreakerRegistry.of(configuration)
        return registry.circuitBreaker("my-cb")

    }
当我启动应用程序时,它会给出一个错误

 An exception occurred while running. null: InvocationTargetException: Found @Configuration and @ConfigurationProperties on com.my.api.config.client.MyConfig.

请帮助我解决此问题。

@Configuration
&
@ConfigurationProperties
两者不能同时应用于一个类型。但是,您可以通过以下两种方式实现您的目标

@Configuration
类中的
@Bean
上使用
@ConfigurationProperties
application.properties

config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
断路器

公共级断路器{
专用int连接超时;
私有字符串clientId;
//无参数构造函数
//能手/二传手
}
断路器配置

@配置
公共类断路器配置{
@豆子
@配置属性(前缀=“配置断路器”)
公共断路器{
返回新断路器();
}
}
单独的
@ConfigurationProperties
@Configuration
application.properties

config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
断路器配置属性

config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
config.circuit-breaker.connection-timeout=2000
config.circuit-breaker.clientId=clientId
@ConfigurationProperties(前缀=“配置断路器”)
公共类断路器配置属性{
专用int连接超时;
私有字符串clientId;
//无参数构造函数
//能手/二传手
}
断路器

公共级断路器{
专用int连接超时;
私有字符串clientId;
//无参数构造函数
//能手/二传手
}
断路器配置

@配置
公共类断路器配置{
@豆子
公用断路器(
电路断路器配置属性电路断路器配置属性){
最终断路器=新断路器();
断路器.setClientId(断路器配置属性.getClientId());
断路器
.setConnectionTimeout(CircuitBreakerConfiguration属性.getConnectionTimeout());
回路断路器;
}
}

尝试将您的
@Configuration
@ConfigurationProperties
分开。我希望将两者都放在一个文件中。我可以通过将spring boot starter父版本从2.2.0.M3更改为2.2.0.RC1来实现这一点。