为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot 2.0 使用 WAR 打包将 Tomcat 中的属性文件外部化

Spring Boot 2.0 使用 WAR 打包将 Tomcat 中的属性文件外部化

牛魔王的故事 2022-10-12 09:56:27
我想创建一个 Spring Boot 应用程序(打包为 WAR),它会根据部署的环境自动覆盖一些配置文件。我还希望属性文件在 WAR 之外。我使用 OS Centos 和 Tomcat 作为 Web 服务器。我正在尝试遵循 Vladimir Mitev 在以下问题中的回答类似问题。为了实现这一点,我创建了这个 SPRING_CONFIG_ADDITIONAL_LOCATION 环境变量。然后在路径中,我创建了一个 db.properties 文件,其中包含我想要覆盖的属性。然后在 servlet 初始化程序中,我放置了以下配置:public class ServletInitializer extends SpringBootServletInitializer {  @Override  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {    return application.sources(MyApplication.class).properties("spring.config.name: db");  }}这是另一个需要的类:@SpringBootApplicationpublic class MyApplication{    public static void main(String[] args) {        System.setProperty("spring.config.name", "db");        SpringApplication.run(MyApplication.class, args);    }}但是初始化期间的 Spring Boot 没有找到 db.properties 文件。在官方文档中似乎我必须使用这个“spring.config.additional-location”才能实现我的目标,但我不知道如何。
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

你可以试试:

  1. 在 [tomcat-server-folder]/bin 中创建名为“config”的文件夹

  2. 在 config 文件夹中创建 db.properties 文件。([tomcat-server-folder]/bin/config/db.properties)

  3. 只需在 Tomcat 的 bin 目录中创建包含以下内容的文件 setenv.sh:

JAVA_OPTS="$JAVA_OPTS -Dspring.config.name=db"

或者您可以配置文件的特定位置:

JAVA_OPTS="$JAVA_OPTS -Dspring.config.location=/opt/app/default.properties,/opt/app/db.properties"


查看完整回答
反对 回复 2022-10-12
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在 SpringBootServletInitializer 中配置来不及,必须在 spring 应用运行前设置属性


@SpringBootApplication

public class MyApplication {


    public static void main(String[] args) {

        System.setProperty("spring.config.name", "db");

        SpringApplication.run(MyApplication.class, args);

    }

}


查看完整回答
反对 回复 2022-10-12
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信