Spring bean 未更新

Spring beans not being updated

我正在开发 Spring 启动应用程序。我的代码如下

@Slf4j
@RestController
public class TestController {

    @Autowired
    private TestService testService;
    
    @Autowired
    private TestConfig testConfig;

    @GetMapping("testService")
    public void testService() {
        testService.printConfigValue();
    }
    
    @GetMapping("updateConfig/{value}")
    public void updateConfig(String value) {
        testConfig.setValue(value);
    }
    
    @GetMapping("testConfig")
    public void testConfig() {
        log.info("INSIDE CONTROLLER - Config value = {}", testConfig.getValue());
    }
    

}


@Data
@Configuration
public class TestConfig {
    private String value;
}

@Slf4j
@Service
public class TestService {
    
    @Autowired
    private TestConfig testConfig;
    
    public void printConfigValue() {
        log.info("INSIDE SERVICE - Config value = {}", testConfig.getValue());
    }
    
}

当我使用值为 hello 的 @GetMapping("updateConfig/{value}") 端点并调用 testService 和 testConfig 端点时,我收到一个空值价值。如果我理解正确,Spring 默认情况下应该将其 bean 视为单例。因此,如果我更新“updateConfig/{value}”端点中的 Autowired 配置,它应该在点击 @GetMapping(“testService”) 和 @GetMapping(“testConfig”) 端点时显示更新的值。但是我得到了 TestConfig class 的“值”字段的空值。有人可以解释一下吗?我在这里错过了什么?

您需要添加@PathVariable注释

@GetMapping("updateConfig/{value}")
public void updateConfig(@PathVariable("value") String value) {
    testConfig.setValue(value);
}