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);
}
我正在开发 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);
}