spring-boot-dynamic-config
spring-boot-dynamic-config copied to clipboard
v1.0.8版本,@Value配置在类的成员变量上,自动修改无效
配置方式
@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方法是设置对应属性值在代理对象上,而在接口被调用时是取的是被代理对象上的属性,因此无效。
JAVA8, springboot 2.3.12
配置方式
@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方法是设置对应属性值在代理对象上,而在接口被调用时是取的是被代理对象上的属性,因此无效。
![]()
得在目标类或者目标字段上加上 @DynamicConfig 注解
不好意思,其实是已经加在类上了的,上面没给出来,日志也提示监听到了变化,但实际没有生效
@cavernBuilderZYX Checking.