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 }

 

posted @ 2020-10-04 10:49  戴着假发的程序员0-1  阅读(999)  评论(0编辑  收藏  举报