我正在尝试从@RestController中检索存储在application.yml中的base_url。但是,当我使用下面打印的代码时,它总是返回null。有人可以让我知道为什么@Value(" $ {base_url}")总是返回null?提前谢谢。
休息控制器:
@RestController
public class AccountController {
@Value("${company.department.base_url}")
static String base_url;
@RequestMapping(method = RequestMethod.GET, value = "/getAccount")
public ResponseEntity<Object> getAccount() {
//getAccountCode
}
}
application.yml:
company:
department:
base_url: https://www.test.com
TestApplication.java
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
答案 0 :(得分:1)
你不能使用静态字段,那么你应该这样做:
@Value("${company.department.base_url}")
String base_url;
或尝试解决方法: https://www.mkyong.com/spring/spring-inject-a-value-into-static-variables/
答案 1 :(得分:0)
我不认为@Value可用于静态字段。一种解决方法是使用非静态基于setter的注入来设置它。
@RestController
public class AccountController {
static String base_url;
@Value("${company.department.base_url}")
public void setBaseUrl(String baseUrl){
this.base_url = baseUrl
}
}
参考:https://www.mkyong.com/spring/spring-inject-a-value-into-static-variables/