首页 > 解决方案 > 设置类似“export my_variable=something”的属性时,Spring boot 不会读取配置属性

问题描述

编辑:请密切关注这个问题。我想进行更改而不必重建和重新部署应用程序。我想即时进行更改。

我有一个简单的 Spring Boot 应用程序,我正在尝试测试应用程序是否可以读取环境变量而无需重建和重新部署应用程序。

我有一个简单的主类,它也是@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 。

标签: javaspringspring-boot

解决方案


您需要替换 yaml 文件中的环境变量。

taco: 
     orders: 
        pageSize: {TACO_ORDERS_PAGESIZE : fifty}

您的默认值为taco.orders.pageSize50,它将被您的环境变量TACO_ORDERS_PAGESIZENINETY 自动覆盖。


推荐阅读