内容简介:部署在 Tomcat 上面的 Spring Boot 项目,在某些情况下,我们可能会修改配置文件中的参数,这样应该怎么做呢?传统的方式是直接在本地修改,然后打包部署,但是这种方式太麻烦了,要是我只是修改了很小的一个参数,都要重新打包,得不偿失。
1. 修改 Tomcat 中的 catalina.sh 文件
部署在 Tomcat 上面的 Spring Boot 项目,在某些情况下,我们可能会修改配置文件中的参数,这样应该怎么做呢?
传统的方式是直接在本地修改,然后打包部署,但是这种方式太麻烦了,要是我只是修改了很小的一个参数,都要重新打包,得不偿失。
于是稍微研究了一下,找到了两种方式,来向项目传递参数。
第一种方式就是修改 Tomcat 中的 catalina.sh 这个文件,例如我在 Spring Boot 项目的配置文件中自定义了一个配置,如下:
#application.yml 中的配置 project: args: ${info}
然后修改 Tomcat 下面的 bin/catalina.sh 文件,添加一个 JAVA_OPTS 属性,指定 info 的值:
需要注意的是,如果指定的是一个包含了空格的字符串,要用单引号包围,例如上面的 -Dinfo="'I am roseduan'"
。
这种方式出现的问题:
但是,这种传递参数的方式是不太方便的,举个例子:在本地环境,启动项目的时候,该怎么去设置这个 info 的值呢?如果不指定肯定是要报错的。只不过我也找到了一种方式,在 IntelliJ IDEA 中,我们可以在 Run/Debug Configuration 中设置参数:
这样就能够在本地启动启动项目了。
但是还存在一个问题,就是使用 maven 打包的时候,也会报错,仍然是找不到 info 的值,这时候我们也可以使用mvn 打包时来传递参数,命令是: mvn package -Dinfo="I am roseduan"
。部署到 tomcat 中后,我们就可以使用修改 catalina.sh 中的内容来指定 info 的值。
2. 修改 Tomcat 中的 contxt.xml 文件
上面的这种方式,其实应该少量的配置是可以的,但是如果我们需要指定大量的配置,并且每个配置的内容都很长,这样就不是非常方便了,因为每次打包,都需要写很多参数。
所以第二种方式,修改 context.xml 文件,就十分的有优势了。我们不需要修改任务本地的配置,也不用配置任何参数,还是上面那个例子,假如 application.yml 中有如下配置:
#application.yml 中的配置 project: args: I am roseduan
并且这个配置是已经打包在了 Tomcat 上了,我们可以在 Tomcat 中的 conf/context.xml 中添加一些配置来修改这个参数的值:
name 是配置参数在 application.yml 文件中的路径,Type 对应的是 Java 类型,value 是具体的值。
这样的话,我们可以直接在这个文件中指定很多的值了,这样修改还有一个好处便是, 不用重启 Tomcat ,配置即时生效 (只不过需要多试几次,或者稍微等一会)。
最后,需要注意一点: 配置在 application.yml 中的自定义配置,最好是小写,或者使用 - 分隔,不然有可能 context.xml 中的配置不会生效。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- golang中的函数参数值传递和引用传递
- Python函数中参数是值传递,还是引用传递?
- Golang参数传递问题
- react - 20 redux 中传递parameter, click中传递参数
- C# 之方法参数传递机制
- python中函数的参数传递
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web信息架构(第3版)
Peter Morville、Louis Rosenfeld / 陈建勋 / 电子工业出版社 / 2008年8月 / 85.00
本书涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。 本书兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关人员参......一起来看看 《Web信息架构(第3版)》 这本书的介绍吧!