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