1.19beans标签的profile属性
戴着假发的程序员出品
[查看视频教程]
profile用于配置spring的多环境配置。
我们可以通过profile配置多个不同环境下的配置属性。
案例:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <beans profile="test"> 7 <!-- 测试环境下的配置 --> 8 </beans> 9 <beans profile="prod"> 10 <!-- 生产环境下的配置 --> 11 </beans> 12 </beans>
spring 为我们提供了大量的激活 profile 的方法,可以通过代码来激活,也可以通过系统环境变量、JVM参数、servlet上下文参数来定义 spring.profiles.active 参数激活 profile。
ENV方式:ConfigurableEnvironment.setActiveProfiles("test")
JVM参数方式:set JAVA_OPTS="-Dspring.profiles.active=test"
web.xml方式:
1 <init-param> 2 <param-name>spring.profiles.active</param-name> 3 <param-value>production</param-value> 4 </init-param>
标注方式(junit单元测试非常实用):
1 @ActiveProfiles({"unittest","productprofile"})
看案例:
我们配置如下,不同的环境下在service中注入不同的dao:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <!-- 注册accountDAO_mysql --> 7 <bean id="accountDAO_mysql" autowire-candidate="false" class="com.dk.demo1.dao.impl.AccountDAO_mysql"/> 8 <!-- 注册accountDAO_oracle --> 9 <bean id="accountDAO_oracle" class="com.dk.demo1.dao.impl.AccountDAO_oracle"/> 10 <beans profile="mysql"> 11 <!-- 注册accountService 注入accountDAO_mysql --> 12 <bean id="accountService" name="a_service" 13 class="com.dk.demo1.service.AccountService"> 14 <property name="accountDAO" ref="accountDAO_mysql"/> 15 </bean> 16 </beans> 17 <beans profile="oracle"> 18 <!-- 注册accountService 注入accountDAO_mysql --> 19 <bean id="accountService" name="a_service" 20 class="com.dk.demo1.service.AccountService"> 21 <property name="accountDAO" ref="accountDAO_oracle"/> 22 </bean> 23 </beans> 24 </beans>
测试:
1 @Test 2 public void testSpringProfile(){ 3 //创建spring容器 4 ClassPathXmlApplicationContext ac = 5 new ClassPathXmlApplicationContext("applicationContext.xml"); 6 //激活profile 7 ConfigurableEnvironment environment = ac.getEnvironment(); 8 environment.setActiveProfiles("oracle"); 9 //重启容器 10 ac.refresh(); 11 AccountService accountService = ac.getBean(AccountService.class); 12 accountService.save("戴着假发的程序员"); 13 }
我是戴着假发的程序员,分享技术,分享经验,如果要转载,请注明:出自戴着假发的程序员