`

[转]Spring 配置要点

阅读更多
原文:
http://wiki.javascud.org/display/springs/SpringConfig

1.DTD

xml 代码
  1. >

以上是Spring 2.0的标准DTD,相比之下不是很喜欢用schema xsd文件式的定义,一大堆太长了。

2.default-lazy-init

Spring的lazy-init,可以使单元测试与集成测试时的速度大大加快,不过要留意一些 BeanPostProcessor和BeanFactoryPostProcessor的子类如 PropertyPlaceHolderConfigurer,还有spring mvc的servlet.xml,都不能定为lay-init,否则会吃大亏。

3.PropertyOverrideConfigurer

不同于PropertyPlaceholderConfigurer,PropertyOverrideConfigurer主要为了测试环境等进行透明的后期配置特殊更改,如

applicationContext-test.xml:

xml 代码
  1. <bean id="testPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
  2. <property name="location" value="classpath:context/test/jdbc.properties"/>
  3. <!---->bean>

test.properties:

dataSource.url=jdbc:hsqldb:res:default-db

即会在测试时将ApplicationContext 中id为dataSource的bean的url 改为嵌入式数据库。

4. Spring 2.0的schema简写

Spring 2.0开始推进了一系列的简写发,从僵硬的<bean class="xxxx.xxx.xxx" id="xx">,划为<aop:xxxx>这样的形式。</aop:xxxx></bean>

Spring 2.0所提供的各schema见spring参考手册的附录1,附录2还提供了自行开发schema的方式。手册里宣称,普通团队要开发schema有点麻烦,但呼吁各开源团队开发各自的schema.

5.default-merge

从Spring 2.0M2开始,beans支持default-merge= "true" 的定义,子类不需要重新定义父类的List型属性中已定义过的内容。

在声明式事务体系下,一般会定义一个baseTxService基类

xml 代码
  1. <bean id="baseTxService"
  2. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  3. abstract="true">
  4. <property name="transactionManager" ref="transactionManager"/>
  5. <property name="proxyTargetClass" value="true"/>
  6. <property name="transactionAttributes">
  7. <props>
  8. <prop key="get*">PROPAGATION_REQUIRED,readOnly<!---->prop>
  9. <prop key="find*">PROPAGATION_REQUIRED,readOnly<!---->prop>
  10. <prop key="save*">PROPAGATION_REQUIRED<!---->prop>
  11. <prop key="update*">PROPAGATION_REQUIRED<!---->prop>
  12. <prop key="remove*">PROPAGATION_REQUIRED<!---->prop>
  13. <!---->props>
  14. <!---->property>
  15. <!---->bean>

可以在beans统一定义default-merge= true,也可以每个bean定义,则子类的transactionAtttributes只须定义子类新增的部分,无须再定义get*,save*等。

xml 代码
  1. <beans default-merge="true">
  2. <bean id="orderManager" parent="baseTxService">
  3. <property name="target">
  4. <bean class="org.springside.bookstore.service.OrderManager"/>
  5. <!---->property>
  6. <property name="transactionAttributes">
  7. <props>
  8. <prop key="shipOrder">PROPAGATION_REQUIRED<!---->prop>
  9. <!---->props>
  10. <!---->property>
  11. <!---->bean>
  12. <!---->beans>

6.IMPORT

如何组织ApplicationContext文件,决定了声明式编程会不会差一步变成配置地狱。SpringSide的建议,为了单元测试,ApplicationContext文件尽量放ClassPath 而不是WEB-INF 目录。另外,尽量使用<import> 帮助以模块为单元组织ApplicationContext文件。</import>

如根目录的 /applicationContext.xml 和 springmvc-servlet.xml,都只定义公共的一些东西,然后以如下方式include模块里的applicationContext:

xml 代码
  1. <import resource="classpath:org/springside/bookstore/admin/applicationContext-manager.xml"/>

7.ApplicationContext在WEB应用中的实例化

防止*配置地狱*的另一种方法,可以象下面那样使用ContextLoaderListener来在web.xml中注册一个ApplicationContext:
web.xml:

xml 代码
  1. <context-param>
  2. <param-name>contextConfigLocation<!---->param-name>
  3. <param-value>classpath*:spring/*.xml<!---->param-value>
  4. <!---->context-param>
  5. <listener>
  6. <listener-class>org.springframework.web.context.ContextLoaderListener<!---->listener-class>
  7. <!---->listener>

监听器首先检查contextConfigLocation参数,如果它不存在,它将使用/WEB-INF/applicationContext.xml作为默认值。

评论
2 楼 javaway 2007-05-13  
写的不错
1 楼 owenhappy 2007-03-30  
ding

相关推荐

    hibernate+spring配置详细解析

    #### 二、集成配置要点 本篇文章主要探讨如何将Hibernate与Spring进行集成,并通过具体的配置示例来深入理解其工作原理。 ##### 1. 数据源配置 数据源是连接数据库的关键组件,在Spring框架中可以通过多种方式...

    spring整合struts2与hibernate核心配置文件

    1. **Spring配置**:设置数据源,创建SessionFactory Bean,配置事务管理器。 2. **Struts2配置**:启用Spring插件,配置Action类为Spring管理的bean。 3. **Hibernate配置**:配置数据库连接信息,定义实体类映射,...

    spring连接池配置

    #### 三、配置要点总结 通过以上配置项的解析,我们可以总结出以下几点: 1. **连接池规模**:根据应用的实际需求调整`minPoolSize`、`maxPoolSize`和`initialPoolSize`,以达到最佳性能和资源利用。 2. **空闲...

    Spring框架系列(2) - Spring简单例子引入Spring要点.doc

    Spring 框架系列(2)- Spring 简单例子引入 Spring 要点 本文主要承接上文,向您展示 Spring Framework 组件的典型应用场景和基于这个场景设计出的简单案例,并以此引出 Spring 的核心要点,比如 IOC 和 AOP 等。...

    struts2 spring hibernate整合要点、注意点

    1. **Spring配置Hibernate SessionFactory**:在`applicationContext.xml`中配置`SessionFactory`,并通过Spring的依赖注入机制将数据源注入到SessionFactory中。 2. **Struts2配置Spring插件**:在`struts.xml`中...

    struts+hibernate+spring配置参考与架构

    Spring的配置文件通常为`applicationContext.xml`,但这里提到的是"spring的配置",可能指的是特定模块或整合Struts和Hibernate的配置。Spring可以管理Struts的Action,以及Hibernate的数据访问层,实现事务控制和...

    Spring MVC开发配置

    本篇文章将深入探讨Spring MVC开发中的配置要点,尤其适合初学者了解和掌握。 首先,我们需要在Spring的配置文件中定义Controller的业务类。如示例代码所示,创建了一个名为`loginController`的bean,其类型为`...

    spring的定时任务的配置

    ### Spring 定时任务配置详解 #### 一、Spring 定时任务简介 Spring 框架提供了强大的任务调度功能,使得开发者能够...通过本文的学习,希望能够帮助读者更好地理解和掌握 Spring 中定时任务的相关配置和技术要点。

    Spring Hibernate 整合要点之JPA

    5. **Spring配置** 在Spring的配置文件(如`applicationContext.xml`)中,我们需要配置`LocalContainerEntityManagerFactoryBean`以创建EntityManagerFactory,并配置`JpaTransactionManager`作为事务管理器。例如...

    Spring Boot开发教程的主要步骤和要点

    这个教程将带你深入理解Spring Boot的核心概念、主要步骤和关键要点,帮助你快速掌握Spring Boot的开发技能。 首先,理解Spring Boot的基本理念至关重要。Spring Boot旨在通过“约定优于配置”的原则,减少初始化和...

    springMvc+Mybatis+spring3.0+oscache配置文件

    以下是这些技术的详细解释和配置要点。 **Spring MVC** Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring MVC通过解耦业务逻辑、数据处理和用户界面,提供了...

    spring quartz集群配置

    4. **调度器工厂配置**:在Spring配置文件中,使用`SchedulerFactoryBean`来配置Quartz,添加集群相关属性,如`clusterCheckinInterval`(节点心跳检查间隔)和`overwriteExistingJobs`(是否覆盖现有作业)。...

    spring2+hibernate3典型配置

    ### Spring2+Hibernate3 典型配置解析 #### 一、概述 在现代软件开发过程中,Spring 和 Hibernate 是两个非常重要的...同时,也建议深入学习 Spring 和 Hibernate 的官方文档,以便更好地掌握这些技术的核心要点。

    SpringCloud配置、教程、源代码项目等

    #### 配置要点详解 ##### 1. 服务发现 服务发现是指客户端或服务端能够自动发现网络中可用的服务实例的过程。Spring Cloud 提供了一个强大的服务发现机制,通常使用 Netflix 的 Eureka 作为服务注册与发现中心。...

    springsecurity学习笔记

    以上只是Spring Security学习过程中的一部分要点,实际上,这个框架非常深奥,包含了许多高级特性,如频道安全、密码存储、国际化的错误消息等。在学习时,建议结合实际项目实践,这样能更好地理解和掌握其工作原理...

    Struts+Spring+Hibernate配置说明

    - **配置要点**: - 定义ActionMapping来映射HTTP请求到相应的Action类。 - 配置FormBean来封装表单数据。 - 设置Forward来指定Action执行后的跳转页面。 **2. Spring框架配置** - **核心配置文件**:...

    springboot整合springSecurity

    以上是SpringBoot整合SpringSecurity的基础知识要点,实际应用中可能还需要结合具体的业务需求进行更细致的配置和定制。在项目开发中,确保理解并熟练运用这些知识点,能够有效提高应用的安全性和健壮性。

    java之hibernate和spring技术难点及其要点总结

    ### Java之Hibernate和Spring技术难点及其要点总结 #### Hibernate与Spring技术概述 在Java开发领域,Hibernate和Spring作为两个非常重要的框架,对于提高应用程序的开发效率、降低维护成本具有不可替代的作用。...

    Spring线程时间配置:Quartz和CronExpression

    ### Spring线程时间配置:Quartz与CronExpression详解 在Spring框架中,为了实现定时任务的调度,引入了一个强大的工具——Quartz。Quartz是一个功能丰富的开源作业调度器,可以用于Java应用程序中的作业调度。它...

Global site tag (gtag.js) - Google Analytics