第六章IOC:使用注解装配bean

 

第六章IOC:使用注解装配bean

6.1-四个基本的组件注解

 

我们首先来看一下关于四个基本的组件注解(如下所示)。这四个基本的组件注解的含义是人为区分的,也就是说我在持久层使用@Repository注解时spring框架是不能分辨它就是一个持久层组件。因此在使用时我们需要自己区分层次的含义使用合理的注解。以下四个注解都是在类上使用。

    需要注意的是,它们都有一个value属性。该属性是用来注释被注解的bean的id,也就是相当于我们在xml中手动配置的id属性。默认情况下spring将类名的首字母小写作为value属性值,即默认情况等同于@Repository(value="userDao"),所以一般value的属性是可以省略。

    @Component   组件基本注解   (标识了一个受 Spring 管理的基本组件,没有赋予其特殊的含义)

    @Repository   标识持久层组件 (与数据持久化有关,一般用来注解持久层组件)

    @Service      标识服务层组件 (该层主要涉及有关你项目中具体业务的实现逻辑,该层会去调用相应的持久层)

    @Controller    标识控制层组件  (该层用来调度服务层去响应相应的请求,然后返回给对应的视图层)

    按照自己的理解对MVC三层架构与这几个注解的关系做一下介绍。@Component层次由于没有给与相应含义就与三层架构思想基本没有直接的关联。@Repository持久层,就相当于是Model模型层,一般用来注解项目中的DAO层;@Service服务层,是用来注解你的业务代码组件的层;@Controller控制层,则是分离业务后剩下的部分,用来直接响应请求,调用业务层和视图层;对于MVC中的视图层一般是不需要注解,也就是我们javaWEB中的jsp或者其他的视图表现方式。

6.2-context:component-scan自动扫描组件

四个基本的组件注解可以注解相应的类,那么spring通过什么来获取它们呢?就是这一节我们需要介绍的context:component-scan元素来实现这一功能。

首先,需要在spring的配置文件中引入context的命名空间,在beas中引入xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"

注意:引入context的方式见附录一。需要注意的是xsi:schemaLocation是要同时包含所有命名空间的信息,这里我只是单独把context列出来。)

第二步,在spring的xml文件中配置context:component-scan

<context:component-scan ></context:component-scan>

第三步,配置component-scan的属性。

base-package="com.spring.servlets" 

  指定spring扫描指定的包名,可以使用 逗号、分号、空间/制表符(tab)/换行 来分割多个扫描包(都是指英文字符)。例如:"com.spring.servlets,com.spring.controlers,com.spring.entities"用“,”分割开扫描多个包。

  支持数据类:string,默认值:无。

resource-pattern="**/*.class" 

  控制可用于组建检测的类文件,默认推荐使用**/*.class配置一般不需要设置。表示spring可以检测工程目录下所有的.class文件。

  支持的数据类型string。默认值:”**/*.class”。

annotation-config="true" 

该标签隐式的向Spring容器注册了:AutowiredAnnotationBeanPostProcessor 、CommondAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor这四个BeanPostProcessor。这四个组件是为spring

一些特殊的注解提供支持的,例如@Autowired注解。

支持数据类型boolean,默认值:true,表示向spring容器注册。

name-generator="" 

scope-resolver="" 

scoped-proxy="no" 

use-default-filters="true" 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值