是否可以从azure app设置覆盖application.properties值

时间:2018-02-15 10:57:40

标签: spring azure docker azure-web-app-service

我已使用针对Containers的Web应用程序将dockerized spring boot应用程序部署为Azure应用程序服务。我的application.properties文件有一个设置,我需要在部署后覆盖它。有什么方法可以使用我的应用服务的“应用程序设置”部分来执行此操作吗?

3 个答案:

答案 0 :(得分:1)

是的,您可以通过使用正确的应用程序事件侦听器从任何来源使用set application.properties。

org.springframework.context.ApplicationListener

import org.springframework.boot.context.event.ApplicationStartingEvent;
import org.springframework.context.ApplicationListener;

...

public class AzureApplicationPropertiesListener implements ApplicationListener<ApplicationStartingEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartingEvent event) {
        var client = buildAzureIntegrationClient();
        var properties = readApplicationPropertiesFromAzure(client);
        event.getSpringApplication().setDefaultProperties(properties);
    }
}

此处(https://www.shardik.com/blog/2020/04/09/azure-properties/)是一个教程,用于从Azure密钥保管库读取机密,以将其用作Spring应用程序属性。

答案 1 :(得分:0)

我不是特别了解弹簧靴。但是在天蓝色的应用服务环境中。

门户网站中的AppSettings值将始终覆盖配置文件中的应用程序设置值。

因此,例如在.net术语ConfigurationManager.AppSettings [“Key”]中的任何代码都将从门户返回值,如果它存在并覆盖代码配置文件。

答案 2 :(得分:0)

看起来你可以!

another answer here on StackOverflow适用于dotnet,而在Java / Spring环境中,所有azure应用程序设置都被视为系统环境变量,可以通过System.getenv()See also: Microsoft Docs)访问。