借助Maven为项目划分development,test,production环境

很早学习rails的时候,rails在服务器启动的时候,通过参数可以切换不同运行环境。也许spring从rails吸取了这样的功能,从spring3.1就提供了profile功能,方便我们为不同的profile使用不同的bean。能够想到的应用场景就是数据源的配置,在production profile中,可能通过jndi获取数据源,而在开发环境中配置jndi比较费事,使用durid配置数据源,项目发布的时候需要修改数据源的配置,比较麻烦,如果忘记修改就更惨了。 为了解决这样相关的问题,这里使用maven profile和maven resource plugin为项目提供profile功能。

spring profile实例:

<beans profile="development">
<bean id="dataSource-mysql" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url">
<value>jdbc:mysql://192.168.1.100/druid-test</value>
</property>
<property name="username">
<value>admin</value>
</property>
<property name="password">
<value>adminpassword</value>
</property>
<property name="initialSize">
<value>1</value>
</property>
<property name="maxActive">
<value>20</value>
</property>
</bean>
</beans>


<beans profile="production">
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/datasource"/>
</beans>


这里我主要解决项目中三个应用场景:
1:资源文件配置,每个环境下的属性值可能不同
2:日志文件配置,开发环境下日志只需要在控制台显示,而production profile中是需要打到日志文件中。
3:使用maven切换spring profile。

完成上述功能,最主要是在pom.xml文件中添加如下一段配置:

<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>

这样maven搜索src/main/resources下的所有文件,替换有类似这样变量[b]${profiles.active}[/b]的值,其中profiles.active中的值是配置pom.xml文件,如下:

<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profiles.active>development</profiles.active>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<id>production</id>
<properties>
<profiles.active>production</profiles.active>
</properties>
</profile>
</profiles>

上面配置三种profile,默认激活development profile。

为了解决资源文件的问题,我们提供三个资源文件,命名如下。logback-和.xml中间的值为profiles.active的值。

logback-development.xml
logback-production.xml
logback-test.xml

spring property-placeholder引用资源文件的方式如下。
<context:property-placeholder location="classpath:/META-INF/res/resource-${profiles.active}.properties" />


为了解决日志文件的问题,这里使用了logback,和资源文件一样提供四个配置文件。
logback-development.xml
logback-production.xml
logback-test.xml

在classpath下添加logback.xml。logback默认加载classpath下的logback.xml文件,配置内容如下:

<configuration>
<include resource="/META-INF/logback/logback-${profiles.active}.xml"/>
</configuration>


激活spring profile,只要在web.xml中添加如下配置:

<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>${profiles.active}</param-value>
</context-param>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值