Spring Boot单例Bean修改属性后读取值仍为null问题咨询
问题原因
核心问题:路径参数未正确接收
你声明的@GetMapping("updateConfig/{value}")使用路径变量传参,但接口方法的String value参数没有添加@PathVariable注解,Spring MVC无法将URL中携带的参数值绑定到方法入参,导致执行testConfig.setValue(value)时传入的参数本身就是null,所以后续读取到的value始终为null。
潜在问题:注解使用错误
TestConfig类上标注的@Configuration是Spring配置类的专用注解,Spring会对标注该注解的类生成CGLIB代理,不适合用来作为承载自定义属性的普通业务Bean。
修复方案
- 给
updateConfig方法的参数添加@PathVariable注解,完成路径参数绑定:
@GetMapping("updateConfig/{value}") public void updateConfig(@PathVariable String value) { testConfig.setValue(value); }
- 将
TestConfig类上的@Configuration替换为@Component,符合普通单例Bean的使用规范:
@Data @Component public class TestConfig { private String value; }
修改完成后重新测试即可,你对Spring单例Bean的认知是正确的,修改单例Bean的属性后全局注入的实例都会读取到更新后的值。
内容的提问来源于stack exchange,提问作者justAnotherDev
相关产品推荐
相关产品推荐

