Spring
1.DTD
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd">
以上是Spring 2.0的标准DTD,相比之下不是很喜欢用schema xsd文件式的定义,一大堆太长了,只有真正要使用Spring定义的Schema如TX,AOP 时才使用Schema。
2.default-lazy-init
Spring的lazy-init,可以使单元测试与集成测试时的速度大大加快,不过要留意一些类比如XFire导出WebService的定义,还有Spring MVC的xx-servlet.xml文件,都不能定为lay-init,否则会吃大亏。
3.PropertyOverrideConfigurer
不同于PropertyPlaceholderConfigurer 替换context文件中的变量,PropertyOverrideConfigurer是在ApplicationContext 初始化的最后,强行将某些Bean的某些属性,替换成它的properties文件里的值。
比如生产环境的jdbc.properties里定义了jdbc连接为Oracle,并通过PlaceholderConfigurer设置到<bean id="dataSource"> 里,在测试时再载入下面的applicationContex-test.xml文件,就能透明的将配置更改为嵌入式数据库。
applicationContext-test.xml: 定义载入的properties。
<bean id="testPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"> <property name="location" value="classpath:spring/test/jdbc.properties"/> </bean>
spring/test/jdbc.properties: 将ApplicationContext 中id为dataSource的bean的url属性改为使用hsqldb。
dataSource.url=jdbc:hsqldb:res:default-db
4. Spring 2.0的schema简写
Spring 2.0开始推进了一系列的简写法,从僵硬的<bean id="xx" class="xxxx.xxx.xxx">,转为<aop:xxxx>这样的形式。
完整的schema列表见参考手册附录A: http://www.redsaga.com/spring_ref/2.0/html/xsd-config.html
另外,附录B还提供了自行开发schema的方式。手册里宣称,普通应用项目团队要开发schema有点麻烦,但呼吁各开源项目团队开发都各自的schema,共同简化配置文件。
其中有一种可能是最容意使用的默认schema是p,推进<propertity>节点写法的进一步简化。
<bean> <property name="foo" value="foovalue"> <property name="fooBean" ref="fooBean"/> </bean> <!-- 简写为 --> <bean p:foo="foovalue" p:fooBean-ref="fooBean"/>
5.default-merge
从Spring 2.0M2开始,beans支持default-merge= "true" 的定义,子类不需要重新定义父类的List型属性中已定义过的内容。在声明式事务体系下,一般会定义一个baseTxService基类
<bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager"/> <property name="proxyTargetClass" value="true"/> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> </props> </property> </bean>
可以在beans统一定义default-merge= true,也可以每个bean定义,则子类的transactionAtttributes只须定义子类新增的部分,无须再定义get*,save*等。
不过Spring2.0已采用新的AOP写法,此方法的重要性下降。
<beans default-merge="true"> <bean id="orderManager" parent="baseTxService"> <property name="target"> <bean class="org.springside.bookstore.service.OrderManager"/> </property> <property name="transactionAttributes"> <props> <prop key="shipOrder">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
6.IMPORT
如何组织ApplicationContext文件,决定了声明式编程会不会差一步变成配置地狱。SpringSide建议:为了单元测试,ApplicationContext文件尽量放ClassPath 而不是WEB-INF 目录。尽量使用<Import> 帮助以模块为单元组织ApplicationContext文件。如根目录的 /applicationContext.xml 和 springmvc-servlet.xml,都只定义一些公共的东西,然后以如下方式include模块里的applicationContext:
<import resource="classpath:org/springside/bookstore/admin/applicationContext-manager.xml"/>
7.IntrospectorCleanupListener
避免Struts,Quartz的内存泄露导致ClassLoader不能加载。详细见Spring的API DOC文档:
<listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener>
相关推荐
引导上下文负责从外部源加载配置属性,还解密本地外部配置文件中的属性。 在使用 Spring Cloud 时,需要注意到引导上下文和主应用程序上下文的区别,引导上下文使用与主应用程序上下文不同的外部配置约定。可以通过...
**:定义了 AbstractSecurityInterceptor 的配置属性。 - **RunAsManager**:负责执行 RunAs 安全策略。 - **AfterInvocationManager**:在方法调用后执行的安全管理器。 - **扩展安全对象模型**:允许开发者...
### Spring MongoDB 参考文档中文版关键知识点概览 #### 1. 了解Spring - **SpringData**:利用Spring框架的核心功能如IoC容器、类型转换系统等。 - **核心概念**:虽然不需要深入了解Spring API的具体细节,但对...
根据提供的文件信息,以下是对Spring官方文档pdf的知识点详细说明: Spring框架是Java平台上一个开源的、全面的、企业级应用开发框架。Spring的版本3.*是一个非常重要的版本,因为它提供了许多改进和新特性。Spring...
`JobDetailBean`允许我们以更符合Spring风格的方式定义任务,它的属性包括: 1. `jobClass`:指定了实现Quartz`Job`接口的任务类。 2. `beanName`:默认为Bean的ID,用于设置任务的名称。 3. `jobDataAsMap`:一个...
此外,Spring Cloud支持通过覆盖远程属性值来配置微服务,这允许开发者在一个中央位置管理服务的配置,而服务则可以从该位置获取它们的配置。自定义引导配置和属性源是实现这一目标的有效方法,允许开发者针对不同...
- **加密和解密**:提供了关于如何使用Spring Cloud Config加密和解密配置属性的指南。 - **密钥管理**:解释了如何管理加密密钥,包括密钥的存储和轮换策略。 #### Spring Cloud Bus - **推送通知和Spring Cloud ...
### Spring框架配置Bean的高级属性解析 在Spring框架中配置Bean是进行依赖注入的基础操作,而深入理解如何高效地配置Bean及其属性对于提高开发效率、优化项目结构具有重要意义。本文将详细解读标题“spring框架配置...
本文档通过详细的介绍 Spring 的核心概念、主要特性、配置方式、Spring MVC、Spring Boot、实战案例以及最佳实践等内容,帮助读者全面掌握 Spring 的使用方法。无论是初学者还是有经验的开发者,都可以通过这份文档...
你可以学习如何配置bean及其属性,以及如何使用XML或Java配置。 3. **AOP(面向切面编程)**:Spring支持在不修改源代码的情况下,通过切面来实现关注点分离,如日志、事务管理等。 4. **数据访问**:Spring提供了...
通过阅读文档,你可以学习如何配置 Spring 容器、声明 Bean、使用 AOP、构建 MVC 应用、处理数据访问等。此外,文档还涵盖了错误处理、性能优化和最佳实践等方面,对于提升开发效率和维护性具有极大价值。总的来说,...
Bean定义了这些对象的创建方式,包括属性值和配置信息等。通过依赖注入,容器在运行时将依赖关系注入到Bean中。 Spring IoC容器支持不同作用域的Bean,如单例(singleton)、原型(prototype)等。此外,容器还提供...
- **Binder 配置属性**:Binder 支持通过配置属性来自定义其行为。 - **配置选项**:Spring Cloud Stream 提供了一系列配置选项,用于控制应用程序的行为。 - **Spring Cloud Stream Properties**:这些属性用于配置...
6. Spring 3.1新增特性:文档中还提到Spring Framework 3.1中引入的新特性,例如缓存抽象(Cache Abstraction)、Bean定义配置文件(BeanDefinitionProfiles)、环境抽象(Environment Abstraction)、属性源抽象...
Spring 2 中文文档是关于Spring框架的详细技术指南,主要面向中文用户,旨在帮助开发者更好地理解和使用Spring 2版本。Spring是一个开源的Java平台,它简化了企业级应用程序的开发,通过依赖注入(Dependency ...
Spring的表达式语言(SpEL)提供了一个强大的表达式语言,用于存取对象图属性、对象方法调用等操作。Spring的数据绑定功能则允许将表单数据绑定到Java对象上,方便了Web应用的开发。 在文档的附录部分,还可能涵盖...
2. Spring Cloud上下文:涉及应用程序上下文的创建,如何通过服务引导来初始化Spring Boot应用程序上下文,以及引导位置的改变、远程属性的覆盖和自定义配置源的应用。 3. 环境变化刷新:这部分解释了应用程序上...
XML配置是Spring早期的主要配置方式,2.5.6版本中,bean可以通过`<bean>`标签定义,包括bean的id、class属性、属性注入等。此外,还可以使用注解配置,如`@Component`、`@Service`、`@Repository`和`@Controller`,...
本文档详细介绍了 Elasticsearch 配置属性文档的相关知识点,包括 Elasticsearch 节点名称、属性节点数、IP 端口、Spring Data Elasticsearch 配置、Elasticsearch 仓库、Elasticsearch 客户端配置和 SSL 连接等。
文档还包含许多技术细节和配置选项,对于希望深入掌握Spring Framework的开发人员来说,这些信息至关重要。通过学习这些知识点,开发人员可以更加有效地利用Spring来构建稳定、高效、易于维护的企业级应用。