Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @ConfigurationProperties没有';如果在没有注释的地方注入相同的值,则不更新_Java_Spring_Spring Boot_Configurationproperties - Fatal编程技术网

Java @ConfigurationProperties没有';如果在没有注释的地方注入相同的值,则不更新

Java @ConfigurationProperties没有';如果在没有注释的地方注入相同的值,则不更新,java,spring,spring-boot,configurationproperties,Java,Spring,Spring Boot,Configurationproperties,我使用@ConfigurationProperties和Zookeeper在运行时更新某些属性值 代码的相关部分如下所示: @Configuration public class Config { @Bean("limitedRepository") public Repository limitedRepository( @Qualifier("repository") Repository repository, @V

我使用@ConfigurationProperties和Zookeeper在运行时更新某些属性值

代码的相关部分如下所示:

@Configuration
public class Config {

@Bean("limitedRepository")
public Repository limitedRepository(
        @Qualifier("repository") Repository repository,
        @Value("${some.property-one:1}") int one,
        @Value("${some.property-two:2}") int two) {
    return new LimitedRepository(repository, one, two);
}

@Bean("rateAdjuster")
@ConfigurationProperties(prefix = "some.property")
public RateAdjuster rateAdjuster(
        @Qualifier("limitedRepository") Repository limitedRepository,
        @Value("${some.property-one:1}") int one,
        @Value("${some.property-two:2}") int two,
        @Value("${some.property-three:3}") int three,
        @Value("${some.property-four:4}") int four
        ) {
    return new RateAdjuster(limitedRepository, one, two, three, four);
}
}
BeanLimitedRepository使用值作为速率,RateAdjuator是具有调度方法的Bean,该方法应根据特定标准调整和设置limitedRepository Bean的速率

所以我的目标是:

  • 在应用程序运行时设置limitedRepository和RateRegulator bean的所有属性
  • 当我想更新属性时,我只想在运行时更新rateLimiter bean上的属性(limitedRepository上的速率只应由RateRegulator更新)
  • 而且它几乎起作用了。它设置了它应该设置的属性,但是发生了一些有趣的事情

  • 当我试图通过Zookeeper更新属性threethree(它们仅在RateRegulator bean中设置)时,效果很好,RateRegulator用这些值更新
  • 当我试图通过Zookeeper更新属性onetwo(它们也在limitedRepository bean中设置)时,RateRegulator不会更新
  • 如果我将
    @ConfigurationProperties(prefix=“some.property”)
    放在limitedRepository()方法上,那么所有属性都可以在运行时更新,但这不是我想要的

  • 有谁能帮助我了解这里发生了什么,并希望找到这个问题的解决方案吗?

    @ConfigurationProperties(prefix=“some.property”)将尝试对返回的对象设置器应用值。在您的情况下,将在值更改时调用RateRegulator对象设置器。你们有有效的设置器吗?。房价调节器上的房产匹配吗?@AbishekramR实际上,这是个问题!谢谢你给我指出了那个方向,它与我之前认为的问题没有任何关系。SpringBoot使用轻松绑定,因此属性3和属性4对于绑定来说足够相似,而其他两个则不然。