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注解指定外部化配置文件,使配置更为简洁明了。