1
pocketz 2022-04-21 23:27:52 +08:00
我猜这个配置项应该和嵌入的 tomcat 有关,不知道是否提供了相关的设置项
|
2
soda8890 2022-04-22 00:10:46 +08:00 via Android
可以了解下 springboot 的配置文件读取优先级
|
3
jorneyr 2022-04-22 08:10:21 +08:00
可以把 application.yaml, application-<profile>.yaml 放到 jar 所在目录,优先级比 jar 类的配置文件高,可参考 SpringBoot 外部配置、优先级及配置详解 https://zhuanlan.zhihu.com/p/71555677
|
4
vishun 2022-04-22 08:41:06 +08:00
这样就会覆盖:`java -jar xxx.jar --spring.config.additional-location=外部目录 /bootstrap.yml`
|
5
simonlu9 2022-04-22 09:16:04 +08:00
jar 里面的资源文件是不能以绝对路径读的,参考最近的一个微信支付读取证书的做法就是
private String getCertPath() throws IOException { ApplicationHome applicationHome = new ApplicationHome(AppApplication.class); //项目打包成 jar 包所在的根路径 String rootPath = applicationHome.getSource().getParentFile().toString(); String configFilePath = rootPath + "/alipay/alipayCertPublicKey_RSA2.crt"; File configFile = new File(configFilePath); if (!configFile.exists()) { InputStream in = this.getClass().getClassLoader().getResourceAsStream("alipay/alipayCertPublicKey_RSA2.crt"); FileUtils.copyInputStreamToFile(Objects.requireNonNull(in, "alipay/alipayCertPublicKey_RSA2.crt 文件找不到"), configFile); } return configFile.getAbsolutePath(); } |
6
simonlu9 2022-04-22 09:19:35 +08:00
好像理解错了,如果需要优先读外面的配置,只需要把配置文件放在 jar 的同级目录就可以了,要加上 profile 标识,第二个方法就是直接上配置中心,动态更新
|
7
wjx0912 OP @jorneyr 谢谢。这个可以读 application.yaml, application-<profile>.yaml ,但是读其它通用资源不行(类似的自定义 banner.txt 也不行)
可能意图没有说清楚: myconfig\ |---application-druid.yml |---application.yml |---banner.txt |---logback.xml | +---i18n\ |--------messages.properties | +---META-INF\ |--------spring-devtools.properties | +---mybatis\ |--------mybatis-config.xml 就是可以优先读取 myconfig 文件夹,如果读不到然后读取 jar 里面的 resource |
9
wjx0912 OP @simonlu9 application.yaml, application-<profile>.yaml 可以了,现在想把其它通用资源文件也解决下
|
10
fengpan567 2022-04-22 17:33:01 +08:00
spring.config.location
|
11
mpi2018 2022-04-26 23:13:40 +08:00
java -Xbootclasspath/a:./myconfig/ -jar my-admin.jar
把当前目录下的 myconfig 目录加入到 classpath ,可以加载到 myconfig 里面的资源文件 |