【问题标题】:Spring Boot - Where to put properties files when deploying to Tomcat?Spring Boot - 部署到 Tomcat 时将属性文件放在哪里?
【发布时间】:2015-01-31 19:10:53
【问题描述】:

我已经使用Spring Boot 几个星期了,而且我习惯使用application.properties 文件。我可以将它用于简单的部署并与java jarmvn spring-boot:run 一起使用。

现在我正在尝试将我的应用程序部署到Tomcat 8.0.15 应用程序服务器。我一直在阅读文档,但我无法部署 war 文件,因为 Tomcat 找不到这个著名的 application.properties 文件。我的意思是,如果我想将此文件放在war 之外,我应该将它放在我的 Tomcat 安装中的哪个位置以便自动读取它?

【问题讨论】:

    标签: java spring tomcat spring-boot


    【解决方案1】:

    如果您不想稍后更改它,只需将其放在类路径的根目录中,例如如果是 Maven 项目,那么在里面

    <project-folder>/src/main/java/
    

    如果你想稍后更改它而不重建 WAR,那么在 Tomcat 属性文件中

    catalina.properties 
    

    shared.loader=
    

    这使得等号之后列出的属性文件可供已部署的应用程序访问。最好使用绝对路径。

    顺便说一句,我现在会选择使用基于注释的配置,但话又说回来,如果不重新构建 WAR,它就没有改变的舒适度。

    【讨论】:

    • 我想知道,Spring boot是如何加载catalina.properties文件的?
    【解决方案2】:

    Spring 加载属性来自

       1) A /config subdir of the current directory.
       2) The current directory
       3) A classpath /config package
       4) The classpath root 
    

    请参阅文档(23.2 应用程序属性文件): http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-application-property-files

    这应该同样适用于战争(类路径根目录对我来说是最好的)。

    【讨论】:

    • 谢谢,您的回答帮助我将属性文件放在正确的位置,以便我的应用程序加载它。但它没有回答我原来的问题。我的主要问题是如何将其外部化。
    【解决方案3】:

    您可以在 catalina.sh/catalina.batch 或 setEnv.bat/setEnv.sh 中提供属性文件的位置作为“JAVA_OPTS”的一部分。 设置 JAVA_OPTS=-Dspring.config.location=file:/D:/Appconfig/application.properties

    仅供参考:application.yaml 将不会被 spring boot 加载,如果外部战争并定义如上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2015-06-26
      • 2018-06-21
      • 2015-09-03
      • 2020-11-29
      • 2020-06-17
      • 2018-05-18
      相关资源
      最近更新 更多