Spring JavaConfig开发指南(上)
Spring JavaConfig开发指南作者:袁光东1.?????????? 什么是JavaConfigSpring IOC有一个非常核心的概念——Bean。由Spring容器来负责对Bean的实例化,装配和管理。XML是用来描述Bean最为流行的配置方式。Spring可以从XML配置文件中读取任何类型的元数据并自动转换成相应的Java代码。Spring开变了java的编程模式,Spring的下载已经超过了1亿次,可见Spring已经有多流行。随着Spring的日益发展,越来越多的人对Spring提出了批评。“Spring项目大量的烂用XML”就是最为严励的一个批评。由于Spring会把几乎所有的业务类都以Bean的形式配置在XML文件中,造成了大量的XML文件。使用XML来配置Bean失去了编译时的类型安全检查。大量的XML配置使得整个项目变得更加复杂。Rod Johnson也注意到了这个非常严重的问题。当随着JAVA EE 5.0的发布,其中引入了一个非常重要的特性------Annotations(注释)。注释是源代码的标签,这些标签可以在源代码层进行处理或通过编译器把它熔入到class文件中。在JAVA EE 5以后的版本中,注释成为了一个主要的配置选项。Spring使用注释来描述Bean的配置与采用XML相比,因类注释是在一个类源代码中,可以获得类型安全检查的好处。可以良好的支持重构。JavaConfig就是使用注释来描述Bean配置的组件。JavaConfig 是Spring的一个子项目,比起Spring,它还是一个非常年青的项目。目前的版本是1.0 M2。使用XML来配置Bean所能实现的功能,通过JavaConfig同样可以很好的实现。?2.?????????? HelloWorld with JavaConfig2.1?获得JavaConfigJavaConfig的下载地址:http://downloads.sourceforge.net/springframework/spring-javaconfig-1.0-m2-with-dependencies.zip?modtime=1178633399&big_mirror=0关于JavaConfig的更多信息请访问:http://www.springframework.org/node/455?2.2?HelloWorld程序我们将以HelloWorld程序来开始JavaConfig之旅!HelloWorld.java
defaultAutowire
Autowire 默认自动织入方式 INHERITED ? defaultDependencyCheck
DependencyCheck 默认依赖检查方式 DependencyCheck. UNSPECIFIED ,即不进行依赖检查 ? defaultLazy
Lazy 默认延时初始化 Lazy. UNSPECIFIED 即不进行延时初始化 ? names
String[] Configuration名称 "",默认为空字符串 ? useFactoryAspects
boolean 是否使用切面从封装的Bean工厂自动织入 false true,false ?
deaultAutowire标记Bean的自动织入方式,其取值在org.springframework.beans.factory.annotation.Autowire类中进行定义。? 模式 说明 INHERITED 不指定自动织入模式,从封装的factory中继承 NO 不使用自动织入 BY_NAME 根据名称织入bean的属性 BY_TYPE 根据类型织入bean的属性 注意:Autowire并没有定义constructor和autodetect这两种织入方式,也无需要这两种织入方式 ?DefaultDependencyCheck
标记
Bean
的依赖检查方式
,
其取值在
DependencyCheck中定义 模式 说明 UNSPECIFIED 不指定依赖检可方式,从封装的factory中继承 NONE 没有依赖检查 SIMPLE 对原始类型和集合进行依赖检查 OBJECTS 对对象进行依赖检查 ALL 对原始类,集合和对象都进行依赖检查 ?DefaultLazy
标记
Bean
是否进行延时初始化
,
其取值在
Lazy
类中定义
模式 说明 UNSPECIFIED 不指定延时初始化Bean方式,从封装的factory中继承 FALSE 不进延时初始化Bean TRUE 延时初始化Bean ??示例:aliases
String[] Bean的别名 {} ? dependencyCheck
DependencyCheck 默认依赖检查方式 DependencyCheck. UNSPECIFIED ,即不进行依赖检查 ? allowOverriding
boolean 允许覆盖xml或其它Configuration的bean false ? autowire
AutoWire 自动织入方式 INHERITED Autowire ?
dependsOn
String[] 当前Bean依赖的bean {} ? destroyMethodName
String 销毁方法名 空 ? initMethodName
String 初始化方法名 空 ? ?
?
未完,继续见第二部份
1 楼 打倒小日本 2007-06-05 这么好的文章竟然没人讨论?