程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将Spring Boot application.properties外部化为tomcat / lib文件夹大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何将Spring Boot application.properties外部化为tomcat / lib文件夹?

开发过程中遇到如何将Spring Boot application.properties外部化为tomcat / lib文件夹的问题如何解决?下面主要结合日常开发的经验,给出你关于如何将Spring Boot application.properties外部化为tomcat / lib文件夹的解决方法建议,希望对你解决如何将Spring Boot application.properties外部化为tomcat / lib文件夹有所启发或帮助; @H_673_2@一个解决方案可能是按照此问题的]建议将application- {profilE} .propertIEs加载为@Propertysource批注,但随后的日志记录系统将无法正常工作,如您在文档中所见。

@H_673_2@这意味着您在application- {profiles} .propertIEs中的日志记录属性如下:

logging.config=classpath:myapp1/logBACk.xml
logging.path = /path/to/logs
logging.file = myapp1.log
@H_673_2@将被忽略,日志系统将无法正常工作。

@H_673_2@为了解决这个问题,我已经在配置应用程序时使用SpringApplicationBuilder.propertIEs()方法在开始时加载属性。在那里,我设置了Spring Boot用来加载所有application- {profiles} .propertIEs的“ spring.config.LOCATIOn”:

public class Application extends SpringBootServleTinitializer {

    @OverrIDe
    protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
        return springApplicationBuilder
                .sources(Application.class)
                .propertIEs(getPropertIEs());
    }

    public static voID main(String[] args) {

        SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(Application.class)
                .sources(Application.class)
                .propertIEs(getPropertIEs())
                .run(args);
    }

   static PropertIEs getPropertIEs() {
      PropertIEs props = new PropertIEs();
      props.put("spring.config.LOCATIOn", "classpath:myapp1/");
      return props;
   }
}
@H_673_2@然后,我已将属性文件从src / main / resources移至src / main / resources / myapp1

.
├src
| └main
|   └resources
|     └myapp1
|       └application.propertIEs
|       └application-development.propertIEs
|       └logBACk.xml
└─pom.xml
@H_673_2@在pom.xml中,我必须将嵌入式tomcat库的范围设置为“提供”。另外,要从最终战争中排除src / main / resources / myapp1中的所有属性文件,并生成免费的,可部署的战争:

    <plugin>
        <artifactID>maven-war-plugin</artifactID>
        <version>2.6</version>
        <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
            <packagingExcludes>
              **/myapp1/
            </packagingExcludes>
        </configuration>
    </plugin>
@H_673_2@然后在tomcat

├apache-tomcat-7.0.59
 └lib
   ├─myapp1
   |  └application.propertIEs        
   |  └logBACk.xml
   └─myapp2
     └application.propertIEs
     └logBACk.xml
@H_673_2@现在,我可以生成免配置的war并将其放到apache-tomcat-7.0.59 / webapps文件夹中。属性文件将使用类路径(对于每个Web应用程序)独立解析:

   apache-tomcat-7.0.59/lib/myapp1
   apache-tomcat-7.0.59/lib/myapp2
   apache-tomcat-7.0.59/lib/myapp3

解决方法

@H_673_2@我需要一个免费的,可部署的配置项myapp1.war,它可以从tomcat /
lib文件夹中检索配置文件。由于我在同一个tomcat上同时存在其他Web应用程序:myapp2.war,myapp3.war,因此需要以下布局:

tomcat/lib/myapp1/application.properties
tomcat/lib/myapp2/application.properties
tomcat/lib/myapp3/application.properties
@H_673_2@这样,我可以构建战争文件,而无需在战争内部创建任何属性文件,然后将其部署在任何服务器上。

@H_673_2@我已经阅读了Spring文档,但是它解释了以jar运行时如何设置位置:

java -jar myapp.jar --spring.config.LOCATIOn=classpath:/default.properties,classpath:/override.properties
@H_673_2@对于多个同时存在的战争文件,我无法弄清楚该如何做。

@H_673_2@我想知道这是否可行,还是应该放弃Spring Boot并回到传统的Spring MVC应用程序。

大佬总结

以上是大佬教程为你收集整理的如何将Spring Boot application.properties外部化为tomcat / lib文件夹全部内容,希望文章能够帮你解决如何将Spring Boot application.properties外部化为tomcat / lib文件夹所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。