c语言编程笔录

首页 >   > 笔记大全

笔记大全

SpringBoot怎么将配置文件挂到jar包外面

更新时间:2023-10-15

第一段: 问题背景和解决方案

在开发过程中,将配置文件和jar包分离有时是很有必要的。使用Spring Boot时,可以通过指定外部的配置文件来实现这个目标。事实上,Spring Boot已经提供了多种方法来指定外部配置文件,比如通过环境变量、命令行参数等。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;

import java.util.Arrays;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        Environment env = app.run(args).getEnvironment();
        System.out.println("启动成功,访问地址: http://localhost:" + env.getProperty("server.port"));
    }

}

第二段: 指定外部配置文件的方法

Spring Boot提供了三种方式指定外部化配置文件:

  • 通过命令行参数: 在启动时通过“--spring.config.name”和“--spring.config.location”指定配置文件。(示例:java -jar demo.jar --spring.config.name=myproject --spring.config.location=file:///etc/myproject/)
  • 通过环境变量: 在系统环境变量中指定配置文件,例如:“SPRING_CONFIG_NAME=myproject SPRING_CONFIG_LOCATION=file:///etc/myproject/”
  • 通过代码: 在应用程序入口类(通常是SpringApplication类)中通过调用addDefaultProperties方法添加一个或多个属性文件。

第三段: 使用命令行参数指定配置文件目录

使用命令行参数指定外部配置文件是Spring Boot推荐的方式。可以通过"--spring.config.name"和"--spring.config.location"指定配置文件的名称和路径。示例代码如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;

import java.util.Arrays;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        app.setDefaultProperties(Collections
            .singletonMap("spring.config.name", "myproject"));
        Environment env = app.run(args).getEnvironment();
        System.out.println("启动成功,访问地址: http://localhost:" + env.getProperty("server.port"));
    }

}

第四段: 使用@PropertySource指定配置文件

还可以通过@PropertySource注解指定外部化配置文件。该注解应该与@Configuration注解一起使用,以使用@ConfigurationProperties注解注入属性。示例代码如下:

package com.example.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource(value = "file:/etc/myproject/application.properties")
public class AppConfig {

}
总结:Spring Boot 提供多种方法指定外部化配置文件,开发者可以根据实际需求选择合适的方式进行配置。通过命令行参数指定是最为推荐的方式,可以使应用更灵活并更易于维护和部署。另外,可以使用@Configuration和@PropertySource注解指定外部化配置文件,使配置更为简洁明了。