快速业务通道

详解Spring 3.0基于Annotation的依赖注入实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
r,这是因为 constructor 在这里已经没有意义了。

@Bean 没有直接提供指定作用域的属性,可以通过 @Scope 来实现该功能,关于 @Scope 的用法已在 上文列举。

下面讲解基于注解的容器初始化。AnnotationConfigApplicationContext 提供了三个构造函数用于初 始化容器。

AnnotationConfigApplicationContext():该构造函数初始化一个空容器,容器不包含任何 Bean 信 息,需要在稍后通过调用其 register() 方法注册配置类,并调用 refresh() 方法刷新容器。

AnnotationConfigApplicationContext(Class<?>... annotatedClasses):这是最常用的构造 函数,通过将涉及到的配置类传递给该构造函数,以实现将相应配置类中的 Bean 自动注册到容器中。

AnnotationConfigApplicationContext(String... basePackages):该构造函数会自动扫描以给定的 包及其子包下的所有类,并自动识别所有的 Spring Bean,将其注册到容器中。它不但识别标注 @Configuration 的配置类并正确解析,而且同样能识别使用 @Repository、@Service、@Controller、 @Component 标注的类。

除了使用上面第三种类型的构造函数让容器自动扫描 Bean 的配置信息以外, AnnotationConfigApplicationContext 还提供了 scan() 方法,其功能与上面也类似,该方法主要用在 容器初始化之后动态增加 Bean 至容器中。调用了该方法以后,通常需要立即手动调用 refresh() 刷新 容器,以让变更立即生效。

需要注意的是,AnnotationConfigApplicationContext 在解析配置类时,会将配置类自身注册为一个 Bean,因为 @Configuration 注解本身定义时被 @Component 标注了。因此可以说,一个 @Configuration 同时也是一个 @Component。大多数情况下,开发者用不到该 Bean,并且在理想情况下 ,该 Bean 应该是对开发者透明的。@Configuration 的定义如下所示:

@Target({ElementType.TYPE})   @Retention(RetentionPolicy.RUNTIME)   @Documented   @Component   public @interface Configuration {   String value() default "";   }

在一般的项目中,为了结构清晰,通常会根据软件的模块或者结构定义多个 XML 配置文件,然后再定 义一个入口的配置文件,该文件使用 <import/> 将其他的配置文件组织起来。最后只需将该文件 传给 ClassPathXmlApplicationContext 的构造函数即可。针对基于注解的配置,Spring 也提供了类似 的功能,只需定义一个入口配置类,并在该类上使用 @Import 注解引入其他的配置类即可,最后只需要 将该入口类传递给 AnnotationConfigApplicationContext。具体示例如下:

@Configuration   @Import({BookStoreServiceConfig.class,BookStoreDaoConfig.class})   public class BookStoreConfig{ … }

详解Spring 3.0基于Annotation的依赖注入实现(8)

时间:2011-08-13 IBM 张建平

混合使用 XML 与注解进行 Bean 的配置

设计 @Configuration 和 @Bean 的初衷,并不是为了完全取代 XML,而是为了在 XML 之外多一种可 行的选择。由于 Spring 自发布以来,Spring 开发小组便不断简化 XML 配置,使得 XML 配置方式已经 非常成熟,加上 Spring 2.0 以后出现了一系列命名空间的支持,使得 XML 配置方式成为了使用简单、 功能强大的 Bean 定义方式。而且,XML 配置的一些高级功能目前还没有相关注解能够直接支持。因此, 在目前的多数项目中,要么使用纯粹的 XML 配置方式进行 Bean 的配置,要么使用以注解为主,XML 为 辅的配置方式进行 Bean 的配置。

之所以会出现两者共存的情况,主要归结为三个原因:其一,目前绝大多数采用 Spring 进行开发的 项目,几乎都是基于 XML 配置方式的,Spring 在引入注解的同时,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号