nix*_*get 3 configuration war tomcat8 spring-boot
我无法在stackoverflow上找到这个问题的答案因此我在这里问我所以我可以得到一些想法.
我有一个Spring Boot应用程序,我已经在Tomcat 8上部署为war包.我按照本指南创建一个可部署的war文件,它似乎工作得很好.
但是我目前遇到的问题是能够外部化配置,因此我可以将配置作为木偶模板进行管理.
在项目中我所拥有的是,
src/main/resources
-- config/application.yml
-- config/application.dev.yml
-- config/application.prod.yml
-- logback-spring.yml
Run Code Online (Sandbox Code Playgroud)
那我怎么可能加载config/application.dev.yml和config/application.prod.yml外部仍然保持config/application.yml?(包含默认属性spring.application.name)
我已经读过配置按此顺序加载,
因此我试图加载配置文件/opt/apache-tomcat/lib无济于事.
到目前为止有效
通过加载 export CATALINA_OPTS="-Dspring.config.location=/opt/apache-tomcat/lib/application.dev.yml"
不过我想知道的是,
/opt/apache-tomcat/libclasspath 加载不起作用.小智 5
你对加载顺序是正确的.根据Spring启动文档
SpringApplication将从
application.properties以下位置的文件加载属性并将它们添加到Spring环境中:
- 当前目录的A/config子目录.
- 当前目录
- 一个classpath/config包
- 类路径根
列表按优先级排序(在列表中较高位置定义的属性将覆盖在较低位置中定义的属性).
[注意]
您也可以使用YAML('.yml')文件替代'.properties'.
这意味着,如果您将application.yml文件放入/opt/apache-tomcat/lib或/opt/apache-tomcat/lib/config将加载它.
- 找出为什么通过/ opt/apache-tomcat/lib classpath加载不起作用.
但是,如果放置application.dev.yml到该路径,则不会加载它,因为application.dev.ymlSpring不是文件名.如果您希望Spring也读取该文件,您需要将其作为选项
--spring.config.name=application.dev或-Dspring.config.name=application.dev.
但我不建议这种方法.
- 有没有更好的方法来实现这一目标?
是.使用特定于Spring配置文件的属性.您可以将文件重命名application.dev.yml为application-dev.yml,并提供-Dspring.profiles.active=dev选项.Spring将同时读取application-dev.yml和application.yml文件和配置文件的具体配置将覆盖默认配置.
我建议增加-Dspring.profiles.active=dev(或prod)到CATALINA_OPTS每个对应的服务器/ Tomcat实例.
| 归档时间: |
|
| 查看次数: |
7313 次 |
| 最近记录: |