spring-boot-dynamic-config icon indicating copy to clipboard operation
spring-boot-dynamic-config copied to clipboard

v1.0.8版本,@Value配置在类的成员变量上,自动修改无效

Open cavernBuilderZYX opened this issue 2 years ago • 4 comments

配置方式

@RestController
public class CommonSearchController {
    @Value("${test.config:China}")
    private String configStr;
 
    @GetMapping("/test")
    public RestResponse<String> test() {
        return RestResponse.success(configStr);
    }

}

实际调试及运行时无法做到配置项自动更改。 经调试查询,发现在DynamicConfigBeanPostProcessor类的postProcessAfterInitialization方法中获得的入参bean是被cglib代理的对象,因此,field.set方法是设置对应属性值在代理对象上,而在接口被调用时是取的是被代理对象上的属性,因此无效。

问题1

cavernBuilderZYX avatar Apr 28 '23 15:04 cavernBuilderZYX

JAVA8, springboot 2.3.12

cavernBuilderZYX avatar Apr 28 '23 15:04 cavernBuilderZYX

配置方式

@RestController
public class CommonSearchController {
    @Value("${test.config:China}")
    private String configStr;
 
    @GetMapping("/test")
    public RestResponse<String> test() {
        return RestResponse.success(configStr);
    }

}

实际调试及运行时无法做到配置项自动更改。 经调试查询,发现在DynamicConfigBeanPostProcessor类的postProcessAfterInitialization方法中获得的入参bean是被cglib代理的对象,因此,field.set方法是设置对应属性值在代理对象上,而在接口被调用时是取的是被代理对象上的属性,因此无效。

问题1

得在目标类或者目标字段上加上 @DynamicConfig 注解

sadblack avatar May 10 '23 06:05 sadblack

不好意思,其实是已经加在类上了的,上面没给出来,日志也提示监听到了变化,但实际没有生效

图片 图片

cavernBuilderZYX avatar May 10 '23 15:05 cavernBuilderZYX

@cavernBuilderZYX Checking.

Code2Life avatar May 13 '23 01:05 Code2Life