如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。
开发时的某些配置比如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
你可以写一个基类来写这个注解,然后让你们测试类都继承这个测试基类,会很方便。
相关推荐
此外,@Profile注解的加入使得基于不同环境条件的bean配置成为可能,比如开发、测试和生产环境的差异化配置。 在AOP(面向切面编程)方面,Spring 3.1 提供了对JSR-250注解的完全支持,如@PostConstruct和@...
Spring 3.1还引入了对Java配置的增强支持,例如条件注解(@Conditional)、profile注解(@Profile)以及自动配置(Auto-configuration)。条件注解允许我们在满足特定条件下才装配bean,这在微服务或多环境部署中...
- 引入了`@Profile`注解,允许根据环境或配置激活特定的bean定义。 - 提供了`@Async`注解,支持方法级别的异步执行,提高了并发性能。 - 对JSR-330标准的支持增强,如`@Inject`注解的使用。 - `@Configuration`类...
这样,我们可以通过激活或关闭不同的配置集来灵活地适应不同环境。 其次,3.1版本对依赖注入(DI)进行了优化,添加了类型安全的`@Autowired`注解。现在,你可以通过指定类型而不是名称来自动装配bean,降低了因硬...
2. **自动配置**:通过@Profile注解支持环境特定的配置,让开发者可以为不同环境(如开发、测试、生产)编写不同的配置。 3. **ResourceLoader API**:增强了对资源的访问,支持更多的URL协议,如classpath*:,使得...
"spring3.1 与 quartz 1.8.6 整合的所有jar"可能包含以下关键依赖:Spring的核心库、AOP库、Context库以及Quartz的jar包。 2. **配置Spring** 在Spring配置文件中,需要定义一个`SchedulerFactoryBean`,这将是...
Spring 3.1对AOP进行了优化,支持@Profile注解,使得开发者可以根据不同的运行环境加载不同的配置。同时,新增了@Async注解,用于实现方法的异步执行,提高系统并发能力。 2. **依赖注入(Dependency Injection, ...
《基于J2EE的Wicket6.0+Hibernate4.1+Spring3.1实例程序详解》 在当今的Web开发领域,Java EE(J2EE)框架的使用广泛而深入,尤其在企业级应用中占据重要地位。本文将详细探讨一个基于J2EE的实例程序,它整合了...
- 提供了`@Profile`注解,允许根据特定的环境配置来激活或禁用bean,增强了应用的可配置性和灵活性。 2. **数据访问**: - JPA(Java Persistence API)和Hibernate的集成进一步加强,支持JPA 2.0,包括更好的...
Spring3.1版本引入了Spring Expression Language (SpEL)、@Profile注解以及对Groovy的支持,增强了Spring的应用灵活性。 Hibernate是一个持久化框架,专注于对象关系映射(ORM),使得开发者可以使用Java对象来操作...
4. **AOP增强**:增加了@Profile注解,可以在不同环境下激活不同的配置或bean。 5. **数据访问增强**:加强了对JPA、Hibernate和MyBatis等持久层框架的集成,简化了数据访问层的开发。 6. **Web MVC增强**:改进了...
- **Spring 3.1 MVC入门(一):环境搭建**: 这部分将指导初学者如何配置和启动Spring 3.1 MVC项目,包括构建Maven项目、添加依赖、创建DispatcherServlet和Web.xml配置等步骤。 - **Spring_MVC_快速上手教程**: 这...
4. **Profile Support**:Spring 3.1引入了环境配置的概念,允许根据不同的运行环境(例如,开发、测试、生产)加载不同的bean配置,增强了部署的灵活性。 5. **Caching Abstraction**:为了简化缓存管理,Spring ...
10. **Profile功能**:Spring 3.1引入了Profile概念,可以根据不同的运行环境加载不同的配置。 综上所述,Spring Context 3.1.1及其测试实用程序是开发者进行Spring应用开发和测试的重要工具,包含了丰富的功能和...
这一版本引入了@Profile注解,允许开发者根据不同的运行环境来选择启用哪些bean。例如,你可以定义一组bean用于开发环境,另一组用于生产环境,通过@Profile注解轻松切换。 其次,Spring 3.1引入了Expression ...
2. ** profiles**:Spring 3.1引入了环境配置的概念,允许根据不同的运行环境(如开发、生产)选择不同的配置。`@Profile`注解允许我们为特定的环境定义bean。 3. **CGLIB代理增强**:在3.1.1版本中,Spring对CGLIB...
深入理解Spring Environment和Profiles,可能会出现在高级Spring开发者或架构师的面试题目中,包括如何管理不同环境的配置、如何使用@Profile以及如何扩展配置属性源等。 总结来说,Spring Environment抽象是...
@Profile注解则允许在不同的运行环境中选择性地激活特定的bean配置,提高了代码的可复用性和适应性。 Spring 3.1.4在AOP(Aspect-Oriented Programming)方面也有所改进,提供了更灵活的切面定义和通知类型。新的@...
`spring-beans-3.1.xsd`还引入了`profile`概念,允许开发者根据不同的环境条件选择加载不同的bean配置,增强了部署的灵活性。例如,可以通过`<beans profile="dev, test">`来指定在开发或测试环境中使用的bean配置。...
在 AOP(面向切面编程)方面,Spring 3.1.2 提供了更灵活的切面定义,包括注解驱动的切面和 @Profile 功能,使得你可以根据环境或配置来激活或禁用某些切面。 在 MVC(模型-视图-控制器)方面,Spring 3.1.2 优化了...