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个技巧的详细说明: 1. 避免使用自动装配:Spring提供了自动装配功能,通过匹配bean属性或构造函数参数进行依赖注入。尽管能简化配置,但可能会牺牲可读性和可维护性,因此不推荐在大型...
### Spring中XML配置的12个技巧 #### 1. 避免使用自动装配 在Spring框架中,自动装配(auto-wiring)是一种强大的功能,它允许开发者通过元数据(如bean类的自省)自动装配bean之间的依赖关系,从而避免在XML配置...
"Spring ApplicationContext.xml配置的12个技巧演示教学" Spring ApplicationContext.xml配置是 Spring 框架中非常重要的一部分,它提供了企业级服务,并且可以通过依赖注入来获得简单而有效的测试能力。然而,在...
这个插件可能是用来增强IDEA对Spring XML配置文件的支持,提供更丰富的代码提示和自动完成功能。安装插件的方法通常是将解压后的文件移动到IDEA的plugins目录,然后重启IDEA。 对于"xml输入类型,ALt+反斜杠提示包...
本文将探讨12个提升配置效率和可维护性的技巧。 1. **避免过度使用自动装配**(Autowiring):虽然Spring支持通过bean的属性名称或类型自动装配依赖,但这可能导致配置的混乱和不可读性。在大型项目中,推荐明确地...
3. **注册自定义标签**:在Spring的XML配置文件中,你需要声明自定义命名空间,例如`<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo">`。...
在探讨Spring配XML的十二种技巧时,我们深入解析了几个关键点,这些技巧旨在提升Spring框架中XML配置文件的可读性、可维护性和效率。以下是对文章中提到的几点技巧的详细解读: ### 1. 避免使用自动装配 尽管...
### Spring 加载多个配置文件详解 #### 一、引言 在现代软件开发中,Spring 框架因其强大的依赖注入(DI)和面向切面编程(AOP)能力而备受青睐。尤其在构建大型应用时,为了提高代码的可读性和可维护性,将系统...
在Spring XML配置文件中,我们通过`<bean>`标签定义一个bean。例如: ```xml <!-- 初始化参数 --> 张三"/> ``` 这里,`id`是bean的唯一标识符,`class`指定bean的实现类,`property`标签用于设置bean属性的值。 ...
首先,我们需要创建一个核心容器类,类似于`ClassPathXmlApplicationContext`,这个类将负责加载XML配置文件并解析其中的bean定义。这个类通常会有一个初始化方法,接受XML配置文件的路径作为参数,然后解析文件并...
然而,通过特定的配置技巧,我们可以实现XML文件的热加载,这样每次修改完XML文件后,系统会自动感知变化并重新加载,避免了重启服务器的繁琐过程。 首先,我们需要确保Spring和MyBatis的配置文件正确设置了资源...
本文将详细解读标题“spring框架配置bean的高级属性”以及描述中的内容,并结合具体的示例XML配置文件来探讨Bean配置中的高级技巧。 #### 核心概念与应用场景 在描述中提到的`hibernate tools`是一种用于简化...
自 Spring 2.0 起,推荐使用基于 XML Schema 的配置方式,这种方式比传统的 DTD 基础配置更为灵活。一个典型的 Spring 2.5 配置文件至少会包含以下结构: ```xml <?xml version="1.0" encoding="UTF-8"?> ...
【MyBatis-Spring配置教程】是一份专为初学者设计的...这个【MyBatis-Spring教程】应该包含详细步骤和注释,帮助你逐步掌握MyBatis与Spring的整合技巧。记得遇到问题时多查阅资料,不断探索和解决问题,祝你学习顺利!
**web.xml配置详解** 在Java Web开发中,`web.xml`是部署描述符(Deployment Descriptor)的核心文件,它定义了应用程序的...这个CHM文件是理解`web.xml`配置的宝贵资源,可以帮助开发者快速掌握Web应用的配置技巧。
通过学习《Spring配置全书》,开发者能够全面掌握Spring框架的配置技巧,提升Java企业级应用开发的效率和质量。无论是初学者还是资深开发者,都能从中受益,更好地利用Spring框架进行复杂应用的构建。
1. **依赖注入**:Spring框架的核心特性之一是依赖注入,它允许开发者通过外部配置来管理对象及其依赖关系,而不是在代码中硬编码这些依赖。这提高了代码的可测试性、可维护性和松耦合性。 2. **容器**:Spring框架...