Java 设置如下属性时,Spring boot不会读取配置属性;导出我的“变量=something”;
编辑:请密切关注这个问题我希望在不必重建和重新部署应用程序的情况下进行更改。我想随时进行更改。 我有一个简单的Spring boot应用程序,我试图测试应用程序是否可以读取环境变量,而无需重新构建和重新部署应用程序 我有一个简单的主类,它也是一个Java 设置如下属性时,Spring boot不会读取配置属性;导出我的“变量=something”;,java,spring,spring-boot,Java,Spring,Spring Boot,编辑:请密切关注这个问题我希望在不必重建和重新部署应用程序的情况下进行更改。我想随时进行更改。 我有一个简单的Spring boot应用程序,我试图测试应用程序是否可以读取环境变量,而无需重新构建和重新部署应用程序 我有一个简单的主类,它也是一个@RestController @SpringBootApplication @RestController @EnableScheduling public class DemoApplication { public static void
@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
如果有人想重试,我还创建了一个。您需要替换yaml文件中的环境变量
taco:
orders:
pageSize: {TACO_ORDERS_PAGESIZE : fifty}
您的
taco.orders.pageSize
的默认值为50,它将被您的环境变量taco\u orders\u pageSize
90自动覆盖。它不起作用。在启动应用程序时,我没有传递这些env变量。当应用程序已经运行时,我传递这些env变量。我不想重建和重新部署应用程序。我想在运行时动态地更改这些env变量。为此,我认为您可能需要参考@RefreshScope logic。参考:可能重复的