springmvc多环境下配置⽂件的设置
在实际开发时经常需要把⼀些配置信息写在配置⽂件,⽐如mysql的主机地址、端⼝号、⽤户名和密码等。另外,在开发代码时可能⽤⼀套配置参数,⽽部署到测试环境时⼜会⽤另⼀套配置参数,测试完毕再部署到线上环境时,⼜需要使⽤线上环境下的另⼀套参数。因此,实际开发中⾯临着如何给⼯程添加多个环境下的配置⽂件、且要保证不同环境下能⾃动使⽤不同的配置⽂件的问题。
spring提供了spring.profiles.active参数,通常情况下,这个值我们会设置为dev、test和online中的⼀个,分别代表开发环境、测试环境和线上⽣产环境。⽐如当spring.profiles.active的值为dev时,表⽰当前运⾏于开发环境下,应当使⽤开发环境下的配置⽂件。
通过在运⾏程序时给spring.profiles.active参数传⼊不同的值以选择不同的配置⽂件。这样只需要打包⼀次,不必为不同的环境各打包⼀次了。
下⾯来演⽰如何在运⾏阶段选择配置⽂件。在上⼀篇的⼯程的基础上进⾏修改(或者先将上⾯的⼯程恢复成最初的样⼦)。
⾸先在resoures⽬录下创建4个配置⽂件,分别为application.properties、application-dev.properties、application-test.properties和application-online.properties。其中application.properties⽂件⾥存放的是所有环境下都通⽤的配置信息,另外3个则分别对应开发环境、测试环境和线上环境的配置:
因为配置⽂件要到⼯程运⾏时才会进⾏选择,因此,所有的配置⽂件都是需要打包到项⽬中的。先在3个环境下都通⽤的
application.properties⽂件中加⼊⼀个配置项,参数为city.name,值为beijing:
city.name=beijing
和前⾯的例⼦⼀样,dev、test和online环境的配置⽂件都配置了⼀个名为env.name的参数,值分别为env-dev、env-test和env-online。
接下来修改l,增加如下⼀⾏配置如下:
1 <context:property-placeholder location="classpath:application.properties, classpath:application-${spring.profiles.active}.properties"/>
这⼀⾏是告诉spring容器去哪加载配置⽂件。这⾥添加了两个配置⽂件,⼀个是所有环境都通⽤的application.properties⽂件,另⼀个则取决于spring.profiles.active参数的值是多少,如果是dev(即开发环境),则是application-dev.properties⽂件;同理,如果是test(测试环境)则是application-test.properties⽂件;如果是online(线上环境)则是application-online.properties⽂件。
为了观察配置的效果,修改HelloServiceImpl⽂件的内容如下:
st.service.impl;
html动态网页制作代码2
st.service.HelloService;
4import org.springframework.beans.factory.annotation.Value;
5import org.springframework.stereotype.Service;
6
7 @Service
8public class HelloServiceImpl implements HelloService {
9
10  @Value("${env.name}")
11  private String envName;
12
13  @Value("${city.name}")
14  private String cityName;
15
16  @Override
17  public String sayHello(String to) {
18    return "hello " + to + ", env.name:" + envName + ", cityName:" + cityName;
19  }
20 }
HelloServiceImpl除了引⽤了配置⽂件中的env.name参数外,还引⽤了通⽤配置⽂件中的city.name参数。
接下在maven命令⾏中执⾏如下命令构建整个⼯程:
1 clean package
大闹天宫二郎神的形象这⾥构建时没有再传⼊任何参数了。
接下来将打包好的mvc-test-1.0-SNAPSHOT.war⽂件拷贝到tomcat的webapps⽬录下,并改名为mvc-test.war。
运⾏时进⾏配置⽂件的选择,其原理就是在⽤java命令执⾏java程序时传⼊给spring.profiles.active参数不同的值,⽐如:
1 java xxx -Dspring.profiles.active=dev
这样就在启动程序时就把spring.profiles.active参数的设置为dev了。
因为tomcat是我们通常是⽤它⾃⾝bin⽬录下的catalina.sh脚本来启动的,所以我们把启动参数写到这个脚本⾥。打开catalina.sh脚本,搜索到如下⾏:
1 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
将其改成:
1 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Dspring.profiles.active=dev"
小程序维护费用一般多少钱表⽰现在是开发环境。保存并退出,然后在tomcat的bin⽬录下执⾏以下命令以启动tomcat:
1 sh ./catalina.sh run
可以看到,程序正确地选择了开发环境下的配置⽂件。
⽤同样的⽅法,将spring.profiles.active设置为test,并重新启动tomcat,在浏览器中访问,可以看到程序正确地选择了测试环境下的配置⽂件:
将spring.profiles.active设置为online,并重新启动tomcat,在浏览器中访问,可以看到程序正确地选择了线上环境的配置⽂件:
gradle配置文件在哪儿我们再看下tomcat的webapps⽬录下,mvc-test的⽬录结构:
可以看到所有的配置⽂件都打包到WEB-INF/classes⽬录下了,因为是运⾏时才选择配置⽂件,所以所有的配置⽂件都要打包过来。
综上,可以将所有环境都通⽤的配置信息写⼊到application.properties⽂件中,⽽不同运⾏环境下不同
孙侨潞是混血儿吗
的配置信息则分别写⼊到application-dev.properties、application-test.properties和application-online.properties⽂件中,再通过运⾏程序时给sring.profiles.active参数传⼊不同的值(dev或test或online)即可完成不同运⾏环境下选择不同的配置⽂件的功能。
properties文件用什么打开

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。