`
superxielei
  • 浏览: 267136 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

spring3.1 profile 配置不同的环境

阅读更多

如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。

开发时的某些配置比如log4j日志的级别,和生产环境又有所区别。

各种此类的需求,让我希望有一个简单的切换开发环境的好办法,曾经在ROR的时候就很喜欢舒服。

现在spring3.1也给我们带来了profile,可以方便快速的切换环境。

配置环境

使用也是非的方便。只要在applicationContext.xml中添加下边的内容,就可以了

 

<beans profile="develop">
        <context:property-placeholder location="classpath*:jdbc-develop.properties"/>
    </beans>
    <beans profile="production">
        <context:property-placeholder location="classpath*:jdbc-production.properties"/>
    </beans>
    <beans profile="test">
        <context:property-placeholder location="classpath*:jdbc-test.properties"/>
    </beans>

profile的定义一定要在文档的最下边,否则会有异常。整个xml的结构大概是这样的,

   

<beans xmlns="..." ...>
  <bean id="dataSource" ... />
  <bean ... />
  <beans profile="...">
    <bean ...>
  </beans>
</beans>

 我通过给不同的环境,引入不同的properties来设置不同的属性,你也可以直接在bean里进行定义一些特殊的属性,比如下边这样,在test的时候,初始化数据库与默认数据。(代码摘录:springside)

<!-- unit test环境 -->
	<beans profile="test">
	 	<context:property-placeholder ignore-resource-not-found="true"
			location="classpath*:/application.properties,
          			  classpath*:/application.test.properties" />	
		
		<!-- Simple连接池 -->
		<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>

		<!-- 初始化数据表结构 与默认数据-->
		<jdbc:initialize-database data-source="dataSource" ignore-failures="ALL">
			<jdbc:script location="classpath:sql/h2/schema.sql" />
			<jdbc:script location="classpath:data/import-data.sql" encoding="UTF-8"/>
		</jdbc:initialize-database>
	</beans>

 切换环境

  在web.xml中添加一个context-param来切换当前环境:

    <context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>develop</param-value>
    </context-param>

 如果是测试类可以使用注解来切换:

@ActiveProfiles("test")

 测试类大概是这个样子:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@ActiveProfiles("test")
public class DictionaryServiceTest extends AbstractTransactionalJUnit4SpringContextTests

 你可以写一个基类来写这个注解,然后让你们测试类都继承这个测试基类,会很方便。

3
4
分享到:
评论
5 楼 dxqrr 2015-08-07  
利用web.xml来切换
4 楼 Technoboy 2013-07-08  
znlyj 写道
请问一下,为啥我按你的照做之后,报异常,说是找不到dataSource呢?能不能指点一下?

把异常帖一些,或单独m我
3 楼 znlyj 2013-07-06  
请问一下,为啥我按你的照做之后,报异常,说是找不到dataSource呢?能不能指点一下?
2 楼 Technoboy 2013-04-24  
dayoohero 写道
我用spring 3.1 怎么会没不能引用 Acitveprofile 和 ContextConfiguration
注解呢。是要下最新的spring包 还是我有的包没引到项目里来?

需要引用spring-beans-3.1.xsd
1 楼 dayoohero 2013-04-23  
我用spring 3.1 怎么会没不能引用 Acitveprofile 和 ContextConfiguration
注解呢。是要下最新的spring包 还是我有的包没引到项目里来?

相关推荐

    Spring 3.1 jar包

    此外,@Profile注解的加入使得基于不同环境条件的bean配置成为可能,比如开发、测试和生产环境的差异化配置。 在AOP(面向切面编程)方面,Spring 3.1 提供了对JSR-250注解的完全支持,如@PostConstruct和@...

    Spring3.1的IoC实例

    Spring 3.1还引入了对Java配置的增强支持,例如条件注解(@Conditional)、profile注解(@Profile)以及自动配置(Auto-configuration)。条件注解允许我们在满足特定条件下才装配bean,这在微服务或多环境部署中...

    spring3.1帮助文档

    - 引入了`@Profile`注解,允许根据环境或配置激活特定的bean定义。 - 提供了`@Async`注解,支持方法级别的异步执行,提高了并发性能。 - 对JSR-330标准的支持增强,如`@Inject`注解的使用。 - `@Configuration`类...

    Spring 3.1 API

    这样,我们可以通过激活或关闭不同的配置集来灵活地适应不同环境。 其次,3.1版本对依赖注入(DI)进行了优化,添加了类型安全的`@Autowired`注解。现在,你可以通过指定类型而不是名称来自动装配bean,降低了因硬...

    spring3.1+hibernate4+Jpa Dao

    2. **自动配置**:通过@Profile注解支持环境特定的配置,让开发者可以为不同环境(如开发、测试、生产)编写不同的配置。 3. **ResourceLoader API**:增强了对资源的访问,支持更多的URL协议,如classpath*:,使得...

    spring3.1 与 quartz 1.8.6 整合 所有jar

    "spring3.1 与 quartz 1.8.6 整合的所有jar"可能包含以下关键依赖:Spring的核心库、AOP库、Context库以及Quartz的jar包。 2. **配置Spring** 在Spring配置文件中,需要定义一个`SchedulerFactoryBean`,这将是...

    spring3.1 api

    Spring 3.1对AOP进行了优化,支持@Profile注解,使得开发者可以根据不同的运行环境加载不同的配置。同时,新增了@Async注解,用于实现方法的异步执行,提高系统并发能力。 2. **依赖注入(Dependency Injection, ...

    wicket6.0 + hibernate4.1 + spring3.1 基于J2EE的实例程序

    《基于J2EE的Wicket6.0+Hibernate4.1+Spring3.1实例程序详解》 在当今的Web开发领域,Java EE(J2EE)框架的使用广泛而深入,尤其在企业级应用中占据重要地位。本文将详细探讨一个基于J2EE的实例程序,它整合了...

    spring 3.1源码

    - 提供了`@Profile`注解,允许根据特定的环境配置来激活或禁用bean,增强了应用的可配置性和灵活性。 2. **数据访问**: - JPA(Java Persistence API)和Hibernate的集成进一步加强,支持JPA 2.0,包括更好的...

    struts2.3.4+spring3.1+hibernate4.0整合

    Spring3.1版本引入了Spring Expression Language (SpEL)、@Profile注解以及对Groovy的支持,增强了Spring的应用灵活性。 Hibernate是一个持久化框架,专注于对象关系映射(ORM),使得开发者可以使用Java对象来操作...

    spring-3.1.1源码和架包

    4. **AOP增强**:增加了@Profile注解,可以在不同环境下激活不同的配置或bean。 5. **数据访问增强**:加强了对JPA、Hibernate和MyBatis等持久层框架的集成,简化了数据访问层的开发。 6. **Web MVC增强**:改进了...

    Spring2.5、3.0、3.1轻松入门+中级+高级教程14合一

    - **Spring 3.1 MVC入门(一):环境搭建**: 这部分将指导初学者如何配置和启动Spring 3.1 MVC项目,包括构建Maven项目、添加依赖、创建DispatcherServlet和Web.xml配置等步骤。 - **Spring_MVC_快速上手教程**: 这...

    spring3.1.12

    4. **Profile Support**:Spring 3.1引入了环境配置的概念,允许根据不同的运行环境(例如,开发、测试、生产)加载不同的bean配置,增强了部署的灵活性。 5. **Caching Abstraction**:为了简化缓存管理,Spring ...

    spring-context-3.1.1.RELEASE.zip

    10. **Profile功能**:Spring 3.1引入了Profile概念,可以根据不同的运行环境加载不同的配置。 综上所述,Spring Context 3.1.1及其测试实用程序是开发者进行Spring应用开发和测试的重要工具,包含了丰富的功能和...

    spring3.1.0.RELEASE项目源码

    这一版本引入了@Profile注解,允许开发者根据不同的运行环境来选择启用哪些bean。例如,你可以定义一组bean用于开发环境,另一组用于生产环境,通过@Profile注解轻松切换。 其次,Spring 3.1引入了Expression ...

    spring 3.1.1

    2. ** profiles**:Spring 3.1引入了环境配置的概念,允许根据不同的运行环境(如开发、生产)选择不同的配置。`@Profile`注解允许我们为特定的环境定义bean。 3. **CGLIB代理增强**:在3.1.1版本中,Spring对CGLIB...

    第十九章 Spring Environment 抽象(Environment Abstraction)1

    深入理解Spring Environment和Profiles,可能会出现在高级Spring开发者或架构师的面试题目中,包括如何管理不同环境的配置、如何使用@Profile以及如何扩展配置属性源等。 总结来说,Spring Environment抽象是...

    spring3.1.4 jar集合

    @Profile注解则允许在不同的运行环境中选择性地激活特定的bean配置,提高了代码的可复用性和适应性。 Spring 3.1.4在AOP(Aspect-Oriented Programming)方面也有所改进,提供了更灵活的切面定义和通知类型。新的@...

    spring-beans-3.0.xsd

    `spring-beans-3.1.xsd`还引入了`profile`概念,允许开发者根据不同的环境条件选择加载不同的bean配置,增强了部署的灵活性。例如,可以通过`&lt;beans profile="dev, test"&gt;`来指定在开发或测试环境中使用的bean配置。...

    spring3.1.2

    在 AOP(面向切面编程)方面,Spring 3.1.2 提供了更灵活的切面定义,包括注解驱动的切面和 @Profile 功能,使得你可以根据环境或配置来激活或禁用某些切面。 在 MVC(模型-视图-控制器)方面,Spring 3.1.2 优化了...

Global site tag (gtag.js) - Google Analytics