您的位置:首页 > 编程语言 > Java开发

spring <context:component-scan>使用说明

2017-04-01 16:10 375 查看
<context:component-scan base-package="com.**" use-default-filters="true"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
xml配置了这个标签后,spring可以自动去扫描com.**包下面或者子包下面的java文件,如果扫描到有@Component 、@Controller、@Service、@Repository这些注解的类,则把这些类注册为bean。

如果配置了<context:component-scan>那么<context:annotation-config/>标签就可以不用再xml中配置了,因为前者包含后者。

另外<context:annotation-config/>还提供了两个子标签

1.        <context:include-filter>  指定扫描

2.       <context:exclude-filter>  指定不扫描

<context:component-scan> 的 use-default-filters属性,默认为true,这就意味着会扫描指定包下的全部的标有@Component的类,并注册成bean。

可以理解为@Component是@Controller,@Repository,@Service的基类。

这四个都在org.springframework.stereotype包下面,后面3个都属于@Component。

 

@Component是用来标记任何被Spring管理的组件。

@Controller用来标记presentation层(比如web controller)。

@Repository用来标记persistence层(比如DAO)。

@Service用来标记service层。

1、<context:component-scan base-package="com.**"/>

 Use-default-filter此时为true那么会对base-package包或者子包下的所有的进行java类进行扫描,并把匹配的java类注册成bean。

2、如果你只想扫描指定包下面的Controller或者指定不到面某个包,用子标签<context:incluce-filter>和<context:exclude-filter>。如下所示

<context:component-scan base-package="com.**" use-default-filters="true">
<context:include-filter type="annotation"  expression="org.springframework.stereotype.Component"/>
<context:include-filter type="annotation"  expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation"  expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息