`
kidiaoer
  • 浏览: 818617 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

spring自己总结的知识

阅读更多
Spring:总结用XML配置的十二个最佳实践2007-05-23 来自:java060515  [收藏到我的网摘]
1.不要使用autowiring   Spring可以通过类的自省来自动绑定其依赖部分,使得你不必明确指明bean的属性和构造器。Bean的属性可以通过属性名称或类型匹配来实现自动绑定。构造器通过类型匹配来实现自动绑定。你甚至可以指定自动检测自动绑定模式,它可以引导Spring选择一种适当的运行机制。先来看看下面的一个例子: class="com.lizjason.spring.OrderService" autowire="byName"/>   OrderService类的属性名在容器中用于匹配bean实例。自动绑定可以潜在地节省一些打字和减少一些混乱。但是在现实世界的工程里你不应该使用这种方式,这是因为它牺牲了配置的清晰性和可维护性。许多指南和介绍中大量吹捧自动绑定是Spring的一种极好的特征而没有提到这一特性所带来的牺牲。依我的观点,这就像Spring中的object-pooling,它更像是一种为了占据更多市场的商业特征。它对于XML配置文件的小巧化是一个好办法,但实际上也增加了复杂程度,尤其当你运行有大量类声明的工程时。虽然Spring允许你混合自动绑定和手动绑定,但是这个矛盾会使XML配置更加晦涩难懂。 2.使用通俗的命名   这个方式对于Java编码也一样适用。在工程中使用清晰的、描述性的、协调的通俗名称对于开发者理解XML配置是十分有益的。例如对于beanID,你可以根据通俗的Java类名来命名它。对于例子中OrderServiceDAO的beanID命名为orderServiceDAO。对于大的工程,你可以在beanID前面加上包名作为前缀。 3.使用简洁的形式   简洁形式避免了冗长,是因为它从子元素中将属性值和参考写到属性中。例如下面的例子: class="com.lizjason.spring.OrderService"> lizjason   可以使用简洁形式将上述代码重写为: class="com.lizjason.spring.OrderService">   简洁形式功能在1.2版本中可以使用。对于没有简洁形式。   简洁形式不但可以节约你的打字,而且可以使XML配置文件清晰。它最引人注目的是当在一个配置文件中有大量定义的类时可以提高易读性。 4.对于构造器参数匹配,类型名比序号好。   当一个构造器含有一个以上的同种类型的参数,或者属性值的标签已经被占用时,Spring允许你使用从0计数的序号来解决这些会带来混淆的问题。例如: class="com.lizjason.spring.BillingService">   像下面这样,利用类型属性来编写会更好一些: class="com.lizjason.spring.BillingService"> value="lizjason"/>   使用索引可以稍稍减少一些冗长,但是和使用类型属性相比,它还是有容易发生错误的倾向和难于阅读的缺点。你应该只在构造器参数不明确的时候,才使用索引这一方法。 5.尽可能重用已定义过的bean   Spring提供一种类似继承一样的机制来减少配置信息的复制并简化XML配置。定义一个子类可以从它父类那里继承配置信息,而父类实质上作为子类的一个模板。这就是大工程中所谓的重用。你所需要做的就是在父类bean中设置abstract=true,然后在子bean注明它自己的父类bean。例如: class="com.lizjason.spring.AbstractService"> parent="abstractService" class="com.lizjason.spring.ShippingService"> ShippingService类从abstractService类那里继承companyName属性的值??lizjason。如果你没有为一个bean指明类或factory方法,那么这个bean便是抽象的。 6.尽量使用ApplicationContext来装配定义的bean   像在Ant脚本中的引用一样,Spring的引用对于装配模块化的bean来说是很有用的。例如: class="com.lizjason.spring.OrderService"/>   相对于使用import在XML配置中来预装配,通过ApplicationContext来配置这些beans,显得更加灵活。利用ApplicationContext也使得XML配置易于管理。你可以像下面的例子那样在ApplictionContext构造器里布置bean: String[]serviceResources= {"orderServices.xml", "billingServices.xml", "shippingServices.xml"}; ApplicationContextorderServiceContext=new ClassPathXmlApplicationContext(serviceResources); 7.利用id作为bean的标识符   你可以指定一个id或名称来作为bean的标识符。虽然使用id不会提高易读性,但是它可以让XMLparser对bean的引用有效方面进行更好的验证。如果由于XMLIDREF的限制而不能使用某个id,你可以利用names来作为bean的标识符。XMLIDREF的限制是id必须以字母开头(或者在XML规范中定义的标点符号),后面接着字母,数字,连字号,下划线,冒号等。实际上,遇到XMLIDREF限制的问题是很少见的。 8.在开发阶段使用依赖检验   你可以在bean中给依赖检验的属性设置值,而不采用原先默认的空值,属性设置例如simple,object或all,以便容器进行依赖检验。当bean的全部的属性(或某类属性)需要被明确设置或自动绑定时,依赖检验便显得很有用。 class="com.lizjason.spring.OrderService" dependency-check="objects">   在这个例子里,容器确保为orderServicebean设置的属性不是primitives或者collections。为所有的bean设置默认依赖检测也是可以的,但是我们很少这样做,是因为有些bean的属性根本就不必设置。 9.为每个配置文件加上一个headercomment   最好使用descriptiveid和名称来代替在XML配置文件中的注释。此外,加上一个配置文件header也很有用处,它可以概述文件中所定义的bean。你可以选择将描述内容加入description标签中。例如: Thisfiledefinesbillingservice relatedbeansanditdependson baseServices.xml,whichprovides servicebeantemplates... ...   使用description标签的一个好处是可以容易地利用工具从标签中选取出description(的内容)。 10.对于任何变化,要与队友积极交流   当你重构Java代码时,你需要随时更新配置文件并且通知队友。XML配置文件也是代码,它们是应用程序的至关重要的部分,但是它们难于阅读和维护。大部分时间你既要阅读XML配置文件又要阅读运行中的Java代码。 11.Setterinjection优于constructorinjection   Spring提供3种类型的依赖注入:constructorinjection,setterinjection,和methodinjection。我们一般只用前两种类型。 class="com.lizjason.spring.OrderService"> class="com.lizjason.spring.BillingService">   这个例子中,orderService类使用的是constructorinjection,而BillingService类使用的是setterinjection。constructorinjection可以确保bean不会在一个非法状态下被创建,但是setterinjection更加灵活并且更易管理,尤其当类存在很多属性并且其中一些是可选的情况下。 12.不要滥用依赖注入   作为最后一点,SpringApplicationContext可以替你创建Java对象,但是并不是所有的Java对象都通过依赖注入来创建的。例如,全局的对象不应该通过ApplicationContext来创建。Spring是一个很棒的框架,但是,就易读性和易管理性而言,当定义大量bean的时候,基于XML的配置问题就会突出。过度的依赖注入会使XML配置变得复杂而且臃肿。记住!使用强大的IDE时,例如Eclipse和IntelliJ,与XML文件相比,Java代码更加易读,易维护,易管理。 总结   对于Spring的配置,XML是很优秀的方式。但当定义大量bean时,基于XML配置会变得冗长,笨拙。Spring提供了丰富的配置选项。适当地利用其中的选项可以使XML配置清晰,但是,有些选项,例如autowiring(自动绑定),往往会降低易读性和易维护性。文章中所列举的实例,可以帮助你创建出清晰易读的XML配置文件。
分享到:
评论

相关推荐

    spring知识点总结

    **Spring框架概述** Spring是一个开源的Java平台,它主要为构建企业级应用提供全面的框架支持。...通过阅读提供的文档、教程和知识点总结,可以系统地学习和理解Spring,从而提升自己的开发能力。

    spring AOP 理论知识点总结.wps

    spring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wps

    spring阶段知识点总结xmind

    spring阶段知识点总结

    spring问题总结.zip

    这里,我们针对“spring问题总结.zip”文件中的主题进行详细的Spring框架知识探讨。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,通过DI,对象之间的依赖关系被反转,使得应用程序的组件...

    spring知识总结.zip

    在这个"spring知识总结.zip"压缩包中,我们可以期待找到一系列关于Spring框架及其相关技术的学习资料。 1. **Spring框架基础** - **依赖注入(Dependency Injection)**:Spring的核心特性之一,通过容器管理对象...

    spring知识点梳理

    spring从搭建配置到简单开发的一个整体流程,比较适合打基础的朋友!

    spring 问题总结实用知识库分享知识分享

    Spring 问题总结实用知识库分享 Spring 框架是 Java 语言中最流行的框架之一,对于 Java 开发者来说,掌握 Spring 框架是非常重要的。本文将总结 Spring 框架中的一些常见问题和解决方法,旨在帮助开发者更好地掌握...

    spring cloud 知识总结

    springcloud 微服务 知识总结 , Spring Cloud微服务架构体,详细的说明了Spring Cloud微服务从概念到实际操作,包含服务拆分、服务注册、服务发现、服务消费、网关配置、集中配置中心、熔断机制、自动扩展等方面

    Spring总结.xmind

    包含Spring简介,AOP,SpringMVC,集成JDBC,事务,ORM框架,Spring集成知识点总结,以思维导图的形式展示,xmind文件。

    Spring Cloud知识点学习思维导图

    总结来说,Spring Cloud是一个全面的微服务解决方案,它简化了开发、部署和管理分布式系统的过程。通过"Spring Cloud知识点学习思维导图",我们可以清晰地看到各个组件的作用以及它们如何协同工作,这对于深入理解并...

    SpringCloud微服务面试总结.xmind

    SpringCloud微服务面试总结

    SpringCloud知识点暨面试题总结(2).pdf

    SpringCloud是当前微服务架构下非常流行的一个框架,它是基于SpringBoot的,用于快速构建分布式系统中的一些常见模式...这些知识点在面试中也经常被提及,因此对于准备面试的开发者来说,熟悉这些内容是非常有帮助的。

    spring知识总结.xlsx

    该资源包含spring的详细应用,以及MVC的模式详解,配套如何使用mybatis,这三者之间的紧密配合,对Java初学者以及中期人员很有帮助,理解会更加透彻一点。

    Spring学习技术总结

    课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答

    Java后端核心知识总结700页

    Java后端核心知识总结:JVM篇 Java后端核心知识总结:并发编程篇 ...Java核心知识总结:Spring Cloud Java核心知识总结:Spring Cloud Alibaba Java后端核心知识总结:计算机网络 Java后端核心知识总结:Netty ....

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

    Spring知识点总结大全

    Spring框架是Java开发中不可或缺的一部分,它以简化企业级应用程序的构建为目标,通过提供一系列的模块和功能,解决了传统EJB框架存在的诸多问题。本文将深入探讨Spring框架的核心概念、作用以及IoC(控制反转)的...

    Spring源码总结.pdf

    在Spring源码中,容器的加载方式、XML属性配置的解析过程以及自定义标签的处理是核心知识点。 1. **Spring容器加载方式**: - **ClassPathXmlApplicationContext**: 通过类路径加载XML配置文件,适用于传统的Java...

Global site tag (gtag.js) - Google Analytics