知识大全 Spring中XML配置的12个技巧[1]
Posted 属性
篇首语:不患人之不己知,患不知人也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring中XML配置的12个技巧[1]相关的知识,希望对你有一定的参考价值。
Spring中XML配置的12个技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Spring利用依赖注入可以获得简单而有效的测试能力 Spring beans 依赖关系 以及服务所需要的bean都将在配置文件中予以描述 配置文件一般采用XML格式 然而XML配置文件冗长而不易使用 在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制
在这篇文章中我将给你展示 种的有关Spring XML配置文件的最佳技巧 请注意另外一些因素 例如域模型的设计 会影响到XML配置 但是这篇文章更关注于XML配置的可读性和可操控性
避免使用自动装配
Spring可以通过bean类的自省来实现自动装配依赖 这样的话你就不必明确地描述bean的属性或者构造函数的参数 根据属性名称活匹配类型 bean属性可以自动进行装配 而构造函数可以根据匹配类型自动装配 你甚至可以设置自动装配进行自动侦测 这样Spring替你就会选择一个合适的机制 请看下面的例子
Spring可以通过bean类的自省来实现自动装配依赖 这样的话你就不必明确地描述bean的属性或者构造函数的参数 根据属性名称活匹配类型 bean属性可以自动进行装配 而构造函数可以根据匹配类型自动装配 你甚至可以设置自动装配进行自动侦测 这样Spring替你就会选择一个合适的机制 请看下面的例子
class= lizjason spring OrderService autowire= byName />OrderService类的属性名被用来和容器中的一个bean实例进行匹配 自动装配会默默的保存一些类型信息并降低混乱 然而 由于它会牺牲掉这种配置的直观性和可维护性 你在实际的项目中将不会用到它 许多指南和陈述材料都把它吹捧为Spring的一个非常cool的特性 而没有提到它的这个缺点 依我之见 就像Spring的对象池一样 它更多了一些商业味道 它看起来好像可以使XML配置文件更精简一些 但实际上却增加其复杂性 尤其是在你的较大规模的工程中已经定义了很多bean的时候更是如此 Spring允许你混合使用自动和手动装配 但是这种矛盾会使XML配置更加的令人费解
使用命名规范
和Java编码的理念一样 在项目中始终用清晰的 描述性的 一致的命名规范对开发人员理解XML配置非常有用 拿bean ID举例来说 你可以遵循Java类中属性的命名规范 比如说 OrderServiceDAO的bean ID应该是orderServiceDAO 对于大项目来说 在bean ID前加包名来作为前缀
使用简化格式
简化格式有利于减少冗余 因为它把属性值和引用作为属性 而不是子元素 看下面的例子
class= lizjason spring OrderService >lizjason以上程序可以重新以简化格式书写为
class= lizjason spring OrderService >value= lizjason />简化格式在 版本时已经可用了 但请注意不存在这种简化格式不仅可以较少你的代码输入量 而且可以使XML配置更加的清晰 当你的配置文件中存在大量的bean定义时 它可以显著地提高可读性
尽量使用type而不是index去解决构造函数参数的匹配问题
当构造函数中有多个同类型的参数时 Spring只允许你使用从 开始的index或者value标签来解决这个问题 请看下面的例子
class= lizjason spring BillingService >最好用type属性取代上面的做法
class= lizjason spring BillingService >value= lizjason />用index可以稍微减少冗余 但是它更容易出错且不如type属性可读性高 你应该仅在构造函数中有参数冲突时使用index
如可能 尽量复用bean定义
Spring提供了一种类似于继承的机制来降低配置信息的重复并使XML配置更加的简单 一个子bean可以从它的父bean继承配置信息 本质上这个父bean就像它的子bean的一个模板 这是一个在大型项目中必须使用的特性 所有你要做的就是把父bean的abstract属性置为true 并在子bean中加以引用 例如
class= lizjason spring AbstractService >value= lizjason />parent= abstractService class= lizjason spring ShippingService >shippingService bean继承了abstractService bean的属性panyName的值lizjason 注意 如果你为bean声名一个class或工厂方法 这个bean将会默认为abstract
cha138/Article/program/Java/ky/201311/29184相关参考
SpringXML配置的12个技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Sprin
Spring中bean的基本xml配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在spri
读取xml文件 /** *利用XmlBeanFactory(Resourceresource) *这里Resource必须是xml格式 *Resource包括AbstractResourc
知识大全 spring在web.xml中和在struts中的不同配置
Spring中WebApplicationContext的研究 ApplicationContext是Spring的核心Context我们通常解释为上下文环境我想用容器来表述它更容易理解一些Ap
Spring集成Quartz的XML配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <
Spring中加载XML配置文件的方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! sprin
Spring自动装配的学习 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在xml配置文件中au
Spring中加载XML文件的方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! spring中
Spring中的Object/XML映射详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
Spring中Quartz的配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Quartz是一