设置诸如“ export my_variable = something”之类的属性时,Spring Boot不会读取配置属性

时间:2019-07-05 18:08:32

标签: java spring spring-boot

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

我有一个简单的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

1 个答案:

答案 0 :(得分:2)

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

taco: 
     orders: 
        pageSize: {TACO_ORDERS_PAGESIZE : fifty}

taco.orders.pageSize的默认值为50,它将被环境变量TACO_ORDERS_PAGESIZE NINETY自动覆盖。