Spring boot 如何在spring boot中替换src/main/resources中application.properties中的属性

Spring boot 如何在spring boot中替换src/main/resources中application.properties中的属性,spring-boot,Spring Boot,我使用的是Spring启动应用程序,并且在src/main/resources中有application.properties属性文件。它有一些属性需要由外部属性文件替换。我将在命令行中传递外部文件位置 需要解决如何用外部属性替换应用程序内部属性的问题 public static void main(String[] args) throws JMSException, MQException, IOException { ClassLoader classLoader = Threa

我使用的是Spring启动应用程序,并且在src/main/resources中有application.properties属性文件。它有一些属性需要由外部属性文件替换。我将在命令行中传递外部文件位置

需要解决如何用外部属性替换应用程序内部属性的问题

public static void main(String[] args) throws JMSException, MQException, IOException {

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream input = classLoader.getResourceAsStream("Application.properties");
    Properties properties = new Properties();
    properties.load(input);
    properties.load(new FileReader(args[0]));

    SpringApplication springApplication = new SpringApplication(new Object[]{ChapsSchemeFeed.class});
    springApplication.setDefaultProperties(properties);
    springApplication.run(args);
}

在这段代码中,我从命令行读取属性,并使用驻留在应用程序中的application.properties加载它们。但当我开始时,它会从Application.properties加载属性。但是我想用命令行属性文件中的属性替换它。

来自Spring引导手册:

Spring Boot使用一个非常特殊的PropertySource顺序,该顺序旨在允许合理地重写值。按以下顺序考虑属性:

Devtools处于活动状态时,$HOME/.config/spring引导文件夹中的Devtools全局设置属性

测试上的注释

测试上的属性。在和测试注释上提供,用于测试应用程序的特定部分

命令行参数

来自SPRING_应用程序_JSON的属性内嵌在环境变量或系统属性中的JSON

ServletConfig初始化参数

ServletContext初始化参数

来自java的JNDI属性:comp/env

Java系统属性System.getProperties

public static void main(String[] args) throws JMSException, MQException, IOException {

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream input = classLoader.getResourceAsStream("Application.properties");
    Properties properties = new Properties();
    properties.load(input);
    properties.load(new FileReader(args[0]));

    SpringApplication springApplication = new SpringApplication(new Object[]{ChapsSchemeFeed.class});
    springApplication.setDefaultProperties(properties);
    springApplication.run(args);
}
操作系统环境变量

仅在random.*中具有属性的RandomValuePropertySource

打包jar应用程序之外的特定于概要文件的应用程序属性-{Profile}.properties和YAML变体

封装在jar应用程序中的特定于概要文件的应用程序属性-{Profile}.properties和YAML变体

打包的jar Application.properties和YAML变体之外的应用程序属性

打包在jar Application.properties和YAML变体中的应用程序属性

参考资料:


嗨,迪利普。最好先编写代码,然后向他人寻求帮助。