如何在 Spring 启动应用程序中获取有效属性,而不管它在哪里定义?

How to get the effective Properties in Spring Boot application regardless of where it is defined?

假设我通过将 -Dmy.property=314 传递给 JVM 从命令行启动 Spring 引导应用程序时定义了一个 属性,并且我还在 属性 中定义了 属性 =13=] :

my.property=318

据我所知,命令行优先级更高,当我在 bean 中注入 my.property 的值时,我得到 314。是否有任何 API 我可以获得属性而不管它在哪里定义并尊重这个优先级?我的意思是我得到 属性 将由 Spring.

注入 bean

如果您不想通过 @Value 等其他机制或 @ConfigurationProperties 等绑定注入 属性,您可以通过 Environment[=14] 获取它=]

    @Autowired
    private Environment env;
    ...
    env.getProperty("xxx.yyy");