`
dengkehai
  • 浏览: 80271 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring XML配置的12个技巧(1)(转)

阅读更多
Spring是一个强有力的java程序框架,其被广泛应用于java的程序中。它用POJO提供了企业级服务。Spring利用依赖注入可以获得简单而有效的测试能力。Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式。然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制。

在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧。它们中的一些具有更多的实际意义,而不仅是最好的技巧。请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配置的可读性和可操控性。

1. 避免使用自动装配

Spring可以通过bean类的自省来实现自动装配依赖,这样的话你就不必明确地描述bean的属性或者构造函数的参数。根据属性名称活匹配类型,bean属性可以自动进行装配。而构造函数可以根据匹配类型自动装配。你甚至可以设置自动装配进行自动侦测,这样Spring替你就会选择一个合适的机制。请看下面的例子:

    <bean id="orderService"

        class="com.lizjason.spring.OrderService"

        autowire="byName"/>

OrderService类的属性名被用来和容器中的一个bean实例进行匹配。自动装配会默默的保存一些类型信息并降低混乱。然而,由于它会牺牲掉这种配置的直观性和可维护性,你在实际的项目中将不会用到它。许多指南和陈述材料都把它吹捧为Spring的一个非常cool的特性,而没有提到它的这个缺点。依我之见,就像Spring的对象池一样,它更多了一些商业味道。它看起来好像可以使XML配置文件更精简一些,但实际上却增加其复杂性,尤其是在你的较大规模的工程中已经定义了很多bean的时候更是如此。Spring允许你混合使用自动和手动装配,但是这种矛盾会使XML配置更加的令人费解。

2. 使用命名规范

和Java编码的理念一样,在项目中始终用清晰的,描述性的,一致的命名规范对开发人员理解XML配置非常有用。拿bean ID举例来说,你可以遵循Java类中属性的命名规范。比如说,OrderServiceDAO的bean ID应该是orderServiceDAO。对于大项目来说,在bean ID前加包名来作为前缀。

3. 使用简化格式

简化格式有利于减少冗余,因为它把属性值和引用作为属性,而不是子元素。看下面的例子:

   <bean id="orderService"
       class="com.lizjason.spring.OrderService">
        <property name="companyName">
            <value>lizjason</value>
        </property>
        <constructor-arg>
            <ref bean="orderDAO">

        </constructor-arg>

    </bean>

以上程序可以重新以简化格式书写为:
    <bean id="orderService"
        class="com.lizjason.spring.OrderService">
        <property name="companyName"
            value="lizjason"/>
        <constructor-arg ref="orderDAO"/>
    </bean>

简化格式在1.2版本时已经可用了,但请注意不存在<ref local="...">这种简化格式不仅可以较少你的代码输入量,而且可以使XML配置更加的清晰。当你的配置文件中存在大量的bean定义时,它可以显著地提高可读性。

4. 尽量使用type而不是index去解决构造函数参数的匹配问题

当构造函数中有多个同类型的参数时,Spring只允许你使用从0开始的index或者value标签来解决这个问题。请看下面的例子:
    <bean id="billingService"

        class="com.lizjason.spring.BillingService">

        <constructor-arg index="0" value="lizjason"/>

        <constructor-arg index="1" value="100"/>

    </bean>

最好用type属性取代上面的做法:

    <bean id="billingService"

        class="com.lizjason.spring.BillingService">

        <constructor-arg type="java.lang.String"

            value="lizjason"/>

        <constructor-arg type="int" value="100"/>

    </bean>

用index可以稍微减少冗余,但是它更容易出错且不如type属性可读性高。你应该仅在构造函数中有参数冲突时使用index。

5. 如可能,尽量复用bean定义

Spring提供了一种类似于继承的机制来降低配置信息的重复并使XML配置更加的简单。一个子bean可以从它的父bean继承配置信息,本质上这个父bean就像它的子bean的一个模板。这是一个在大型项目中必须使用的特性。所有你要做的就是把父bean的abstract属性置为true,并在子bean中加以引用。例如:

    <bean id="abstractService" abstract="true"

        class="com.lizjason.spring.AbstractService">

        <property name="companyName"

            value="lizjason"/>

    </bean>



    <bean id="shippingService"

        parent="abstractService"

        class="com.lizjason.spring.ShippingService">

        <property name="shippedBy" value="lizjason"/>

    </bean>

shippingService bean继承了abstractService bean的属性companyName的值lizjason。注意,如果你为bean声名一个class或工厂方法,这个bean将会默认为abstract

6. 尽量使用ApplicationContext装配bean,而不是用import

像Ant脚本中imports一样,Spring的import 元素对于模块化bean的装配非常有用,例如:

    <beans>

        <import resource="billingServices.xml"/>

        <import resource="shippingServices.xml"/>

        <bean id="orderService"

            class="com.lizjason.spring.OrderService"/>

    <beans>

然而,比起在XML中用imports预装配这些bean,利用ApplicationContext来配置它们将更加灵活,也可以使XML配置更加的易于管理。你可以像下面这样传递一个bean定义数组到ApplicationContext的构造函数中:

    String[] serviceResources =

        {"orderServices.xml",

        "billingServices.xml",

        "shippingServices.xml"};

ApplicationContext orderServiceContext = new

ClassPathXmlApplicationContext(serviceResources);
分享到:
评论

相关推荐

    Spring XML配置的12个技巧

    以下是对Spring XML配置的12个技巧的详细说明: 1. 避免使用自动装配:Spring提供了自动装配功能,通过匹配bean属性或构造函数参数进行依赖注入。尽管能简化配置,但可能会牺牲可读性和可维护性,因此不推荐在大型...

    Spring中XML配置的12个技巧

    ### Spring中XML配置的12个技巧 #### 1. 避免使用自动装配 在Spring框架中,自动装配(auto-wiring)是一种强大的功能,它允许开发者通过元数据(如bean类的自省)自动装配bean之间的依赖关系,从而避免在XML配置...

    Spring ApplicationContext.xml配置的12个技巧演示教学.pdf

    "Spring ApplicationContext.xml配置的12个技巧演示教学" Spring ApplicationContext.xml配置是 Spring 框架中非常重要的一部分,它提供了企业级服务,并且可以通过依赖注入来获得简单而有效的测试能力。然而,在...

    spring xml class属性提示

    这个插件可能是用来增强IDEA对Spring XML配置文件的支持,提供更丰富的代码提示和自动完成功能。安装插件的方法通常是将解压后的文件移动到IDEA的plugins目录,然后重启IDEA。 对于"xml输入类型,ALt+反斜杠提示包...

    SpringApplicationContext.xml配置的12个技巧.pdf

    本文将探讨12个提升配置效率和可维护性的技巧。 1. **避免过度使用自动装配**(Autowiring):虽然Spring支持通过bean的属性名称或类型自动装配依赖,但这可能导致配置的混乱和不可读性。在大型项目中,推荐明确地...

    spring 自定义xml标签

    3. **注册自定义标签**:在Spring的XML配置文件中,你需要声明自定义命名空间,例如`&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"&gt;`。...

    Spring 配XML的十二种技巧.doc

    在探讨Spring配XML的十二种技巧时,我们深入解析了几个关键点,这些技巧旨在提升Spring框架中XML配置文件的可读性、可维护性和效率。以下是对文章中提到的几点技巧的详细解读: ### 1. 避免使用自动装配 尽管...

    Spring 加载多个配置文件

    ### Spring 加载多个配置文件详解 #### 一、引言 在现代软件开发中,Spring 框架因其强大的依赖注入(DI)和面向切面编程(AOP)能力而备受青睐。尤其在构建大型应用时,为了提高代码的可读性和可维护性,将系统...

    Spring 配XML的十二种技巧

    在Spring XML配置文件中,我们通过`&lt;bean&gt;`标签定义一个bean。例如: ```xml &lt;!-- 初始化参数 --&gt; 张三"/&gt; ``` 这里,`id`是bean的唯一标识符,`class`指定bean的实现类,`property`标签用于设置bean属性的值。 ...

    手写SpringIoc的XML实现方式

    首先,我们需要创建一个核心容器类,类似于`ClassPathXmlApplicationContext`,这个类将负责加载XML配置文件并解析其中的bean定义。这个类通常会有一个初始化方法,接受XML配置文件的路径作为参数,然后解析文件并...

    Spring+mvc+mybatis Mapper xml自动加载

    然而,通过特定的配置技巧,我们可以实现XML文件的热加载,这样每次修改完XML文件后,系统会自动感知变化并重新加载,避免了重启服务器的繁琐过程。 首先,我们需要确保Spring和MyBatis的配置文件正确设置了资源...

    spring框架配置bean的高级属性

    本文将详细解读标题“spring框架配置bean的高级属性”以及描述中的内容,并结合具体的示例XML配置文件来探讨Bean配置中的高级技巧。 #### 核心概念与应用场景 在描述中提到的`hibernate tools`是一种用于简化...

    Spring 2.x配置详解

    自 Spring 2.0 起,推荐使用基于 XML Schema 的配置方式,这种方式比传统的 DTD 基础配置更为灵活。一个典型的 Spring 2.5 配置文件至少会包含以下结构: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; ...

    MyBatis-Spring配置教程,非常适合初学者

    【MyBatis-Spring配置教程】是一份专为初学者设计的...这个【MyBatis-Spring教程】应该包含详细步骤和注释,帮助你逐步掌握MyBatis与Spring的整合技巧。记得遇到问题时多查阅资料,不断探索和解决问题,祝你学习顺利!

    web.xml配置详细介绍(CHM)

    **web.xml配置详解** 在Java Web开发中,`web.xml`是部署描述符(Deployment Descriptor)的核心文件,它定义了应用程序的...这个CHM文件是理解`web.xml`配置的宝贵资源,可以帮助开发者快速掌握Web应用的配置技巧。

    spring配置全书.doc

    通过学习《Spring配置全书》,开发者能够全面掌握Spring框架的配置技巧,提升Java企业级应用开发的效率和质量。无论是初学者还是资深开发者,都能从中受益,更好地利用Spring框架进行复杂应用的构建。

    达内-12 spring

    1. **依赖注入**:Spring框架的核心特性之一是依赖注入,它允许开发者通过外部配置来管理对象及其依赖关系,而不是在代码中硬编码这些依赖。这提高了代码的可测试性、可维护性和松耦合性。 2. **容器**:Spring框架...

Global site tag (gtag.js) - Google Analytics