spring通过profile实现开发和测试环境切换

以开发测试为例,介绍tomcat部署应用和maven部署应用下利用profile实现测试环境和开发环境切换

一、tomcat部署应用

1、数据源配置

dev.properties 路径:/src/main/resrouces

jdbc.database=MYSQL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://mysql:3306/develop?useUnicode=true&characterEncoding=utf-8
jdbc.schema=develop
jdbc.username=root
jdbc.password=12qw4ds

test.properties 路径:/src/main/resrouces

jdbc.database=MYSQL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
jdbc.schema=test
jdbc.username=root
jdbc.password=123456

applicationContext-detabase.xml 路径:src/main/resources/spring

<beans profile="development">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
      <property name="driverClass" value="${jdbc.driver}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
    </bean>
  </beans>

  <beans profile="test">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
      <property name="driverClass" value="${jdbc.driver}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
    </bean>
  </beans>

2、springmvc.xml   webapp/WEB-INF

可以通过定义 profile 来将开发和生产环境的数据源配置分开

<beans profile="development">
    <context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" file-encoding="UTF-8"
      location="classpath:dev.properties" />
  </beans>

  <beans profile="test">
    <context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" file-encoding="UTF-8"
      location="test.properties" />
  </beans>

2、web.xml中定义默认的profile:

默认 profile 是指在没有任何 profile 被激活的情况下,默认 profile 内定义的内容将被使用,通常可以在 web.xml 中定义全局 servlet 上下文参数 spring.profiles.default 实现

<!-- 配置spring的默认profile -->  
<context-param>  
    <param-name>spring.profiles.default</param-name>  
    <param-value>development</param-value>  
</context-param>

4、激活profile

spring 为我们提供了大量的激活 profile 的方法,可以通过代码来激活,也可以通过系统环境变量、JVM参数、servlet上下文参数来定spring.profiles.active 参数激活 profile,这里我们通过定义 JVM 参数实现。以 tomcat 为例,我们在 tomcat 的启动脚本中加入以下 JVM 参数

JAVA_OPTS="-Dspring.profiles.active=development -server -XX:PermSize=256M -XX:MaxPermSize=512M -Xms1024M -Xmx1024M -Xss512k -XX:LargePageSizeInBytes=128m -XX:MaxTenuringThreshold=15 -XX:+Aggr
essiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -
XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_BASE/heap.dump.bin -Djava.awt.headless=true"

如果不定义,则会使用我们指定的默认 profile

二、maven部署应用

1、配置文件

dev.properties 路径为 /src/main/resources/filter

master.jdbc.driverClass = com.mysql.jdbc.Driver
master.jdbc.url = jdbc:mysql://mysql-dev:3306/dev
master.jdbc.user = root
master.jdbc.password = Aa12345678

test.properties 路径为 /src/main/resources/filter

master.jdbc.driverClass = com.mysql.jdbc.Driver
master.jdbc.url = jdbc:mysql://mysql-test:3306/test
master.jdbc.user = root
master.jdbc.password = root

config.properties 路径:/src/main/resource/META-INF

master.jdbc.driverClass = ${master.jdbc.driverClass}
master.jdbc.url = ${master.jdbc.url}
master.jdbc.user = ${master.jdbc.user}
master.jdbc.password = ${master.jdbc.password}

spring-datasource.xml 路径为:/src/main/resources/spring

<bean id="dataSourceMaster" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
        <property name="driverClassName" value="${master.jdbc.driverClass}"/>
        <property name="url" value="${master.jdbc.url}"/>
        <property name="username" value="${master.jdbc.user}"/>
        <property name="password" value="${master.jdbc.password}"/>
        <property name="filters" value="stat"/>
        <property name="maxActive" value="50"/>
        <property name="initialSize" value="0"/>
        <property name="maxWait" value="60000"/>
        <property name="minIdle" value="0"/>
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <property name="validationQuery" value="SELECT 'x'"/>
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
    </bean>

2、pom.xml

<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<profile.file.name>/profile/dev.properties</profile.file.name>
				<package.target>dev</package.target>
			</properties>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<profile.file.name>/profile/test.properties</profile.file.name>
				<package.target>test</package.target>
			</properties>
		</profile>
		<profile>
			<id>pro</id>
			<properties>
				<profile.file.name>/profile/pro.properties</profile.file.name>
				<package.target>pro</package.target>
			</properties>
		</profile>
	</profiles>

	.......

	<!-- 定义配置文件路径 -->
<build>
        <filters> 
                 <filter>src/main/resources/filter/${env}.properties</filter>
    </filters>
    <resources>
        	<resource>
        		<directory>src/main/resources</directory>
        		<excludes>
        			<exclude>template**/**</exclude>
        		</excludes>
        		<filtering>false</filtering>
        	</resource>
    </resources>
</build>

其中默认激活可以做如下配置

<activation>
	<activeByDefault>true</activeByDefault>
</activation>

filters:用于定义指定filter属性文件位置,例如filter元素赋值filters/filter1.properties,那么这个文件里面就可以定义name=value对,这个name=value对的值就可以在工程pom中通过${name}引用,默认的filter目录是${basedir}/src/main/filters/
resources:描述工程中资源的位置

3、spring-bean.xml

<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:/META-INF/config.properties</value>
			</list>
		</property>
</bean>
<import resource="spring-datasource.xml"/>

4、web.xml

<!-- 配置Spring初始文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
            classpath:spring/spring-bean.xml
        </param-value>
	</context-param>

5、打包

maven clean install -Pdev

原文地址:http://blog.51cto.com/1385903/2060233

时间: 2024-08-02 15:07:50

spring通过profile实现开发和测试环境切换的相关文章

spring boot--日志、开发和生产环境切换、自定义配置

Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug-> info -> warning -> error # 默认级别为 info # 如果设置了debug=true的时候,日志级别会自动降低为debug # ROOT代表默认全局设置 logging.level.ROOT=INFO # 可以设置指定包的输出级别,这样的话,指定的包,级别以下

AngularJS初探:搭建PhoneCat项目的开发与测试环境

AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 对于PhoneCat项目的开发环境和测试环境的搭建,官方网站上提供了详细的指导:http://docs.angularjs.org/tutorial. 获取源代码 PhoneCat项目的源代码托管在GitHub上,因此获取源代码之前需要安装Git (http://git-scm.com/download).安装Git后,可以

MAVEN开发,测试环境Properties的替换支持

1)在src/main/resources下面建立dev,product目录 src/main/resources/dev src/main/resources/product 2)分别在这两个路径下放置适合各自环境的配置文件,如db.properties, log4j.properties等 3)配置pom,进行环境的选择. 3.1)配制plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <ar

搭建S3C6410开发板测试环境

开发板用于驱动程序的测试,调试.进行硬件的模拟调试与测试. 不同开发板的区别主要在烧录嵌入式系统的方式上 5.2安装串口调试工具:minicom OK6410开发板可以通过串口通信显示linux驱动程序输出的调试信息 Minicom是为了让Pc与串口设备通信,pc安装的接受和发送串口数据的程序,是linux版串口管理软件. 安装.配置和测试minicom: 1.检测当前系统是否支持USB转串口 # lsmod | qrep usbserial 2.安装minicom # apt-get inst

通过Maven配置测试环境和开发环境连接不同的数据库

通过Maven配置测试环境和开发环境连接不同的数据库 作者及来源: 通灵宝玉 - 博客园    收藏到→_→: 此文来自: 马开东博客 网址:http://www.makaidong.com 摘要: 通过Maven配置测试环境和开发环境连接不同的数据库 "通过Maven配置测试环境和开发环境连接不同的数据库":关键词:通过 maven 配置 测试 环境 开发 环境 连接 不同 其他数据库 通过maven配置测试环境和开发环境连接不同的其他数据库 操作上分3个步骤 1.在数据持久层的po

Spring Boot-使用YML文件配置多环境

两种配置方式 1:在一个yml文件中,2:在多个yml文件中 1 一个yml文件 application.yml spring:  profiles:    active: dev ---#开发环境配置spring:  profiles: dev server:  port: 1000 ---#测试环境配置spring:  profiles: stg server:  port: 1001 ---#生产环境配置spring:  profiles: prd server:  port: 1002

SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作

原文:SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作 在开发或者测试环境的数据库中,经常会发现有开发或者测试人员误删除表或者数据的情况,对于开发或者测试库,一般都没有安排定时的备份任务去备份数据库,一方面是由于存储资源有限,不太可能给开发或者测试环境准备大量的存储空间,二是必要性不是很强,开发或者测试库的数据库对象变化太多,通过还原备份的方式又有可能冲掉其最近新建的数据库对象.但是不得不面对的问题就是个别人在执行update或者delete操作的时候“忘了加

第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约

智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试环境. 智能合约就是运行在以太坊上的程序.客户端可以通过Web3.js API调用智能合约,而智能合约本身又可以直接访问以太坊网络,也就是说,智能合约前面连接着客户端,后面连接着以太坊网络,起到了承前启后的作用,而且通过智能合约,可以让整个以太坊网络更灵活,可控性更强.其实智能合约的作用相当于微软O

服务端测试环境hosts配置检查脚本

问题 由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置.若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题.届时排查由于环境配置不统一引起的环境问题将会费时费力. 思考 测试环境之间的关联配置就是hosts的配置,我们只需要知道A测试环境中各个服务器上的hosts文件中配置的B环境的hosts是否一致即可得出结论. 解决方案 在A测试环境服务器端各个机器的根目录下均安放hosts检查脚本hosts_check.py,内容如下: #!/