欢迎来到天天文库
浏览记录
ID:12706718
大小:75.00 KB
页数:10页
时间:2018-07-18
《详解spring 3.0基于annotation的依赖注入实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、详解Spring3.0基于Annotation的依赖注入实现简介:Spring的依赖配置方式与Spring框架的内核自身是松耦合设计的。然而,直到Spring3.0以前,使用XML进行依赖配置几乎是唯一的选择。Spring3.0的出现改变了这一状况,它提供了一系列的针对依赖注入的注解,这使得SpringIoC在XML文件之外多了一种可行的选择。本文将详细介绍如何使用这些注解进行依赖配置的管理。级别:初级使用@Repository、@Service、@Controller和@Component将类标识为BeanSpring自2.0版本
2、开始,陆续引入了一些注解用于简化Spring的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层(DAO层)的类标识为SpringBean。具体只需将该注解标注在DAO类上即可。同时,为了让Spring能够扫描类路径中的类并识别出@Repository注解,需要在XML配置文件中启用Bean的自动扫描功能,这可以通过实现。如下所示://首先使用@Repository将DAO类声明为Beanpackagebookstore.dao;@Repositorypubli
3、cclassUserDaoImplimplementsUserDao{……}//其次,在XML配置文件中启动Spring的自动扫描功能…………如此,我们就不再需要在XML中显式使用进行Bean的配置。Spring在容器初始化时将自动扫描base-package指定的包及其子包下的所有class文件,所有标注了@Repository的类都将被注册为SpringBean。为什么@Repo
4、sitory只能标注在DAO类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为Spring的数据访问异常类型。Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。Spring2.5在@Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:l@Component是一个泛化的概念,仅仅表示一个组
5、件(Bean),可以作用在任何层次。l@Service通常作用在业务层,但是目前该功能与@Component相同。l@Constroller通常作用在控制层,但是目前该功能与@Component相同。通过在类上使用@Repository、@Component、@Service和@Constroller注解,Spring会自动创建相应的BeanDefinition对象,并注册到ApplicationContext中。这些类就成了Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与@Repository是完全相同的。
6、另外,除了上面的四个注解外,用户可以创建自定义的注解,然后在注解上标注@Component,那么,该自定义注解便具有了与所@Component相同的功能。不过这个功能并不常用。当一个Bean被自动检测到时,会根据那个扫描器的BeanNameGenerator策略生成它的bean名称。默认情况下,对于包含name属性的@Component、@Repository、@Service和@Controller,会把name取值作为Bean的名字。如果这个注解不包含name值或是其他被自定义过滤器发现的组件,默认Bean名称会是小写开头的非限
7、定类名。如果你不想使用默认bean命名策略,可以提供一个自定义的命名策略。首先实现BeanNameGenerator接口,确认包含了一个默认的无参数构造方法。然后在配置扫描器时提供一个全限定类名,如下所示:与通过XML配置的SpringBean一样,通过上述注解标识的Bean,其默认作用域是"singleton",为了配合这四个注解,在标
8、注Bean的同时能够指定Bean的作用域,Spring2.5引入了@Scope注解。使用该注解时只需提供作用域的名称就行了,如下所示:@Scope("prototype")@RepositorypublicclassDemo{…}如果
此文档下载收益归作者所有