一、 Spring的Profile功能
这个功能的使用方法其实和Maven的profile是一样的,可以通过不同的参数来激活某些配置,这样便于我们在开发、调试以及生产模式下进行切换。
对于类的配置,如果需要启用Profile功能,有以下几种方式:
1. 对于在配置类上使用注解方式的配置
@Configuration @Profile(value="productprofile") public class ProductConfig { ... }
2. 对于使用注解方式定义类
@Bean @Profile("dev") public Person getPerson() { }
3. 在XML里使用
<beans> <bean id="person" class="com.test.spring.profile.ProfilePerson"> <constructor-arg value="The message comes from default enviorment."/> </bean> <bean id="person2" class="com.test.spring.profile.ProfilePerson"> <constructor-arg value="The message comes from default2 enviorment."/> </bean> </beans> <beans profile="dev"> <bean id="person" class="com.test.spring.profile.ProfilePerson"> <constructor-arg value="The message comes from development enviorment."/> </bean> </beans> <beans profile="prd"> <bean id="person" class="com.test.spring.profile.ProfilePerson"> <constructor-arg value="The message comes from production enviorment."/> </bean> </beans>
4. 也可以将特定的配置集中在某些文件里,然后通过参数来激活
<import resource="spring/spring-profile-${spring.profiles.active}.xml"/>
总结一下,就是以下这些:
1.ENV方式: ConfigurableEnvironment.setActiveProfiles("unittest") 2.代码方式:System.setProperty("spring.profiles.active", "dev") 3.JVM参数方式: -Dspring.profiles.active="unittest" 4.web.xml方式: <init-param> <param-name>spring.profiles.active</param-name> <param-value>production</param-value> </init-param> 5.标注方式(junit单元测试非常实用): @ActiveProfiles({"unittest","productprofile"})
二、Spring里的事件发布功能
之前看过Guava的事件发布,回过头发现Spring也已经提供了,对于项目里简单的事件触发功能,肯定是够用了。以下内容转载自:http://wiselyman.iteye.com/blog/2212013
应按照如下部分实现bean之间的消息通讯
- 继承ApplicationEvent类实现自己的事件
- 实现继承ApplicationListener接口实现监听事件
- 使用ApplicationContext发布消息
//事件类 import org.springframework.context.ApplicationEvent; public class DemoEvent extends ApplicationEvent{ private static final long serialVersionUID = 1L; private String msg; public DemoEvent(Object source,String msg) { super(source); this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } //监听类 import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; @Component public class DemoListener implements ApplicationListener<DemoEvent> { public void onApplicationEvent(DemoEvent event) { String msg = ((DemoEvent) event).getMsg(); System.out.println("我监听到了pulisher发布的message为:"+msg); } } //测试类 import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.stereotype.Component; @Component public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.event"); Main main =context.getBean(Main.class); main.pulish(context); context.close(); } public void pulish(AnnotationConfigApplicationContext context){ context.publishEvent(new DemoEvent(this, "22")); } }
三、Spring的Conditional功能
其实这个功能感觉上跟Profile是类似的,主要是Conditional允许自定义规则,更加灵活一些。
这里有一篇文章,对两者有一个示例性的说明:
http://blog.csdn.net/yangxt/article/details/19970323
相关推荐
4. **spring-security-core-tiger-2.0.5.RELEASE-sources.jar**:这个jar包包含了Spring Security核心组件的源代码,对于开发者来说非常有用,因为它允许他们查看和理解框架内部的工作原理,便于调试和自定义扩展。...
接下来,我们将讨论几个关键知识点: 1. **实体(Entities)**:在Spring Data JPA中,实体是数据库表的映射。通过在类上添加`@Entity`注解,我们可以声明一个Java类为数据库表的代表。`@Id`注解用于标识主键字段。...
在 Spring Boot 2.5.0 中,项目开发流程通常包括需求分析、概要设计、详细设计、编码、测试和部署等几个阶段。在每个阶段都需要遵守一定的流程和规范,以确保项目的质量和可维护性。 环境搭建 在 Spring Boot ...
在深入理解Spring Security之前,我们需要了解几个核心概念: 1. **认证(Authentication)**:这是确认用户身份的过程。Spring Security 提供了多种认证方式,如用户名/密码、证书、API密钥等。通常,用户通过登录...
通过将Spring的灵活与OSGi的模块化特性相结合,Spring Dynamic Modules提供了许多对企业级应用非常有用的功能。 #### 二、Spring Dynamic Modules 的核心功能 - **动态模块性**:在OSGi环境下,应用程序通常被拆分...
主要包括以下几个部分: - **介绍**:简要介绍了ExtDirectSpring的功能特性和适用场景。 - **版本变更记录**:列举了不同版本之间的功能改进及修复的Bug等信息。 - **从1.0升级至1.1的迁移指南**:指导开发者如何...
Spring Batch采用了清晰的分层架构设计,主要包括以下几个层面: - **Application**:负责业务逻辑处理。 - **Batch Core**:包含核心的批处理领域对象,如Job、Step等。 - **Batch Execution Environment**:为...
Spring for Android的核心模块主要关注于以下几个方面: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,DI在Android平台上同样适用。它允许开发者声明性地配置对象及其依赖关系,而不是硬...
Spring框架主要由以下几个核心模块组成: 1. **Core Container**:这是Spring框架的基础,包含Bean Factory和ApplicationContext。Bean Factory是Spring的IoC(Inversion of Control,控制反转)容器,负责管理对象...
Spring 框架主要由以下几个核心模块组成: 1. **核心容器**(Core Container):这是Spring的基础,包括 Beans、Core、Context 和 Expression Language 模块。Beans模块提供了Bean工厂,它是Spring的IoC(Inversion...
配置 Hadoop 主要涉及到以下几个方面: - **核心配置**:包括 `hadoop-site.xml` 文件中的配置,这些配置通常用于设置 Hadoop 的基本行为。 - **资源管理器配置**:如 YARN(Yet Another Resource Negotiator)相关...
在本案例中,我们关注的是Spring中的Nested事务,这是一个相对复杂的特性,但非常有用,特别是在需要子事务处理的场景下。下面将详细解释这个概念。 Nested事务是基于JDBC的Savepoint机制实现的,它可以让我们在一...
在Spring框架中,API主要包括以下几个关键模块: 1. **Spring Core Container**: 这是Spring框架的基础,包括Bean工厂和ApplicationContext接口。Bean工厂负责管理对象的生命周期和依赖关系,而ApplicationContext...
在Spring Data JPA中,主要包含以下几个核心知识点: 1. **Repository接口**:这是Spring Data JPA的核心特性之一,通过定义一组通用的CRUD(创建、读取、更新、删除)操作接口,开发者可以快速实现数据访问层。...
Spring框架主要由以下几个核心模块组成: 1. **Core Container**(核心容器):这是Spring的基础,包括Bean Factory和ApplicationContext。Bean Factory是Spring的IoC(Inversion of Control,控制反转)容器,负责...
本教程的核心内容围绕以下几个关键知识点展开: 1. **服务发现**:Spring Cloud提供了Eureka和Consul等服务发现组件,使得服务能够互相找到对方,从而实现服务间的通信。服务注册与发现是微服务架构中的基础,它...
4.2.3版本中,Spring Framework包含以下几个主要模块: 1. **Spring Core Container**:这是Spring框架的基础,包括Bean Factory和Application Context。Bean Factory负责创建、配置和管理对象,而Application ...
根据给定文件的信息,我们可以提炼出以下几个重要的知识点: ### 一、Spring 对 ORM 的支持 #### 8.1 概述 - **ORM (Object/Relation Mapping) 框架**:这是一种编程技术,用于将对象模型与关系型数据库之间的...
"跟我学Shiro教程.pdf"可能涵盖了以下几个方面: 1. **认证**:Shiro提供了一种直观的方式来处理用户登录,包括用户名/密码的验证。它支持多种凭证匹配器,可以自定义处理不同类型的认证信息。 2. **授权**:Shiro...
实现自定义Schema解析的过程主要包括以下几个步骤: 1. **定义Schema**: 使用XSD(XML Schema Definition)文件定义新的XML命名空间和元素。这个文件会包含所有自定义的标签和它们的属性。例如,我们可以创建一个`...