由于需求的原因,配置文件中的数据库连接等内容需要动态替换。
首先搜到的是可以运行jar包的时候传配置参数:
java -jar demo.jar --server.port = 9000
但是客户端传给我的是一整个大json串,所以pass。
然后了解到SpringApplication从4个地方加载配置文件:
- jar包同目录下的config文件夹中
- jar包同目录下
- classpath下的config文件夹中
- classpath目录下
优先级依次降低,前两个是从外部读取配置文件的。但由于某些原因这种方法可能也不满足要求。。
第三种:代码中指定
public class Application {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
InputStream in = new FileInputStream("application.properties");
properties.load(in);
SpringApplication app = new SpringApplication(Application.class);
app.setDefaultProperties(properties);
app.run(args);
}
}
注意这种方式pom.xml打包时需要去除配置文件,在<build>中加:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>*.properties</exclude>
<exclude>*.yml</exclude>
</excludes>
</resource>
</resources>