本文承接接上篇:将spring boot项目成jar包,并把配置文件等放在jar包外部
上篇中我们已经将主要的配置文件application.properties打包至jar包外部,并且通过-Dspring.config.location命令让程序读取了外部配置文件。但是我们发现自定义的config文件仍然没有生效,那怎么解决呢?
其实很简单,使用@PropertySource注解就可以了,具体代码如下:
首先在application.properties文件中添加
config.path=你的配置文件路径/xxx.properties
然后在需要读取配置文件的类上使用@PropertySource注解
@Configuration
@ConfigurationProperties(prefix = "server")
@PropertySource(value = { "classpath:config/server.properties",
"file:${config.path}" }, ignoreResourceNotFound = true,
encoding = "utf-8")
public class CustomizeProperties {
}
稍微解释下上面注解:
当加载配置文件资源时,spring会从classpath:config和配置文件config.path中获取值, 当config.path中文件不存在时,用classpath中的配置,存在时则会被覆盖。 ignoreResourceNotFound = true表示当文件不存在时不报错,默认为false。application.properties中的config.path为自定义属性,可以自行更改,和@PropertySource注解中config.path名字一样即可。
这样,我们就可以让spring读取我们自己定义的config文件了!
如果对于@PropertySource注解不清楚的话可以参考下这篇博客:
https://www.cnblogs.com/whx7762/p/7885735.html
如有不正确之处,希望留言指正,谢谢!
上一篇:将spring boot项目成jar包,并把配置文件等放在jar包外部
下一篇:java自定义Gson生成json字符串的顺序