Spring ApplicationContetml配置的12个技巧

上传人:cn****1 文档编号:507259947 上传时间:2022-12-23 格式:DOCX 页数:7 大小:26.84KB
返回 下载 相关 举报
Spring ApplicationContetml配置的12个技巧_第1页
第1页 / 共7页
Spring ApplicationContetml配置的12个技巧_第2页
第2页 / 共7页
Spring ApplicationContetml配置的12个技巧_第3页
第3页 / 共7页
Spring ApplicationContetml配置的12个技巧_第4页
第4页 / 共7页
Spring ApplicationContetml配置的12个技巧_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Spring ApplicationContetml配置的12个技巧》由会员分享,可在线阅读,更多相关《Spring ApplicationContetml配置的12个技巧(7页珍藏版)》请在金锄头文库上搜索。

1、Spring ApplicationContext.xml 配置的 12个技巧Spring 是一个强有力的 java 程序框架,其被广泛应用于 java 的程序中。它用 POJO 提供了企业级服务。 Spring 利用依 赖注入可以获得简单而有效的测试能力。Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述, 配置文件一般采用XML格式。然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得 难以阅读和控制。在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧。它们中的一些具有更多的实际意义,而不仅是 最好的技

2、巧。请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配置的可读性 和可操控性。1避免使用自动装配Spring 可以通过 bean 类的自省来实现自动装配依赖,这样的话你就不必明确地描述 bean 的属性或者构造函数的参数。 根据属性名称活匹配类型, bean 属性可以自动进行装配。而构造函数可以根据匹配类型自动装配。你甚至可以设置自动 装配进行自动侦测,这样 Spring 替你就会选择一个合适的机制。请看下面的例子:Spring 可以通过 bean 类的自省来实现自动装配依赖,这样的话你就不必明确地描述 bean 的属性或者构造函数的参数。 根据属性名称活匹

3、配类型, bean 属性可以自动进行装配。而构造函数可以根据匹配类型自动装配。你甚至可以设置自动 装配进行自动侦测,这样Spring替你就会选择一个合适的机制。请看下面的例子:OrderService类的属性名被用来和容器中的一个bean实例进行匹配。自动装配会默默的保存一些类型信息并降低混乱。 然而,由于它会牺牲掉这种配置的直观性和可维护性,你在实际的项目中将不会用到它。许多指南和陈述材料都把它吹 捧为Spring的一个非常cool的特性,而没有提到它的这个缺点。依我之见,就像Spring的对象池一样,它更多了一些商 业味道。它看起来好像可以使XML配置文件更精简一些,但实际上却增加其复杂性

4、,尤其是在你的较大规模的工程中已 经定义了很多 bean 的时候更是如此。 Spring 允许你混合使用自动和手动装配,但是这种矛盾会使 XML 配置更加的令人费 解。2使用命名规范和 Java 编码的理念一样,在项目中始终用清晰的,描述性的,一致的命名规范对开发人员理解 XML 配置非常有用。拿 bean ID举例来说,你可以遵循Java类中属性的命名规范。比如说,OrderServiceDAO的bean ID应该是orderServiceDAO。 对于大项目来说,在 bean ID 前加包名来作为前缀。3使用简化格式简化格式有利于减少冗余,因为它把属性值和引用作为属性,而不是子元素。看下面

5、的例子:bean id=orderServiceclass=com.lizjason.spring.OrderServiceproperty name=companyNamevaluelizjason/value/property/bean以上程序可以重新以简化格式书写为:construetor-arg ref=orderDAO/简化格式在1.2版本时已经可用了,但请注意不存在这种简化格式不仅可以较少你的代码输入量,而且可 以使XML配置更加的清晰。当你的配置文件中存在大量的bean定义时,它可以显著地提高可读性。4尽量使用 type 而不是 index 去解决构造函数参数的匹配问题当构造函数

6、中有多个同类型的参数时,Spring只允许你使用从0开始的index或者value标签来解决这个问题。请看下面 的例子:bean id=billingServiceclass=com.lizjason.spring.BillingService/bean最好用type属性取代上面的做法:用index可以稍微减少冗余,但是它更容易出错且不如type属性可读性高。你应该仅在构造函数中有参数冲突时使用index。 5如可能,尽量复用 bean 定义Spring提供了一种类似于继承的机制来降低配置信息的重复并使XML配置更加的简单。一个子bean可以从它的父bean 继承配置信息,本质上这个父 bea

7、n 就像它的子 bean 的一个模板。这是一个在大型项目中必须使用的特性。所有你要做 的就是把父bean的abstract属性置为true,并在子bean中加以引用。例如:shippingservice bean 继承了 abstractservice bean 的属性 companyName 的值 lizjason。注意,如果你为 bean 声名一个 class 或工厂方法,这个 bean 将会默认为 abstract6.尽量使用 Applicationcontext 装配 bean,而不是用 import像Ant脚本中imports 样,Spring的import元素对于模块化bean的装

8、配非常有用,例如:然而,比起在XML中用imports预装配这些bean,利用ApplicationContext来配置它们将更加灵活,也可以使XML配置更 加的易于管理。你可以像下面这样传递一个bean定义数组到ApplicationContext的构造函数中:String serviceResources =orderServices.x ml,billingServices.x ml, shippingServices.x ml1;Applica tio nContextorderServiceContext = new ClassPathXmlApplicationContext(se

9、rviceResources);7. 用id来标识bean你可以用id或名字作为bean的标识。用id可读性较差,但是它可以影响XML分析器使bean的reference有效。如果id 由于XML IDREF约束而无法使用,你可以用name作为bean的标识XML IDREF约束是指id必须以字母开始(或者是在XML 声名了的一个标点符号),后面可以是字母,数字,连字符,下划线,冒号或full stops(不知道怎么翻译好)。在实际应用中 很少会遇到 XML IDREF 约束问题。8. 在开发阶段使用依赖检查你可以为bean的dependency-check属性设置一个值来取代默认的none,

10、比如说simple, objects或者all,这样的话容器 将替你做依赖有效性的检查。当一个 bean 的所有属性(或者某些属性目录)都被明确设置,或利用自动装配时将会非常有 用。bean id=orderServiceclass=com.lizjason.spring.OrderService dependency-check=objectsproperty name=companyNamevalue=lizjason/bean在这个例子中,容器将确保这些属性不是privitives或者保证collections是为orderService bean设置的。为所有的bean设 置默认的依赖

11、检查是可能的,但这个特性由于有些 bean 的属性不需要设置而很少使用。9. 为每个配置文件加一个描述注释在XML配置文件中最好使用有描述性的id和name,而不是成堆的注释。另外,加一个文件描述头将会非常有用,这个 描述可以概括文件中定义的beano另一个选择,你可以在description元素中加入描述信息。例如:beansdescriptionThis file defines billing servicerelated beans and it depends on baseServices.xml,which provides service bean templates.用description元素的一个好处就是工具可以很容易的把描述信息从这个元素中提取出来。10. 和 team members 沟通变更当你修改 java 源码后,要确保更改了配置文件中的相应部分并把这个情况告知你的 team members。 XML 配置文件也是代码,它们是程序的重要组成部分,但它们很难阅读和维护。大多数时间里,你需 要同时看 XML 配置文件和 java 代码才能知道是怎么回事。11. setter 注入和构造函数注入,优先使用前者Spring提供了三种注入方式:构造函数注入,setter注入和方法注入。一般我们使用前两种。bean id=billingServicec

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号