编辑:请密切注意该问题。 我想进行更改而不必重建和重新部署应用程序。我想即时进行更改。
我有一个简单的Spring引导应用程序,我在其中尝试测试应用程序是否可以读取环境变量,而不必重新构建和重新部署该应用程序。
我有一个简单的主类,它也是一个@RestController
@SpringBootApplication
@RestController
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Value("${taco.orders.pageSize}")
private String pageSize;
@GetMapping("/myName")
public String myName() {
return pageSize;
}
int i = 0;
@Scheduled(fixedRate = 2000L)
public void scheduled() {
System.err.println(++i + "-" + pageSize);
}
}
这是我的application.yml文件中的内容:
taco:
orders:
pageSize: fifty
此打印罚款“五十”。但是当我去终端并为密钥设置一个不同的值时,该新值将不会反映出来。
export TACO_ORDERS_PAGESIZE=NINETY
如果有人想重试,我还创建了一个git repo。
答案 0 :(得分:2)
您需要在yaml文件中替换环境变量。
taco:
orders:
pageSize: {TACO_ORDERS_PAGESIZE : fifty}
taco.orders.pageSize
的默认值为50,它将被环境变量TACO_ORDERS_PAGESIZE
NINETY自动覆盖。