`

<context:componet-sacn>的用法

 
阅读更多

 

  在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean

注意:如果配置了<context:component-scan>那么<context:annotation-config/>标签就可以不用再xml中配置了,因为前者包含了后者。另外<context:component-scan>还提供了两个子标签

1.        <context:include-filter>

2.       <context:exclude-filter>

在说明这两个子标签前,先说一下<context:component-scan>有一个use-default-filters属性,改属性默认为true,这就意味着会扫描指定包下的全部的标有@Component的类,并注册成bean.也就是@Component的子注解@Service,@Reposity。所以如果仅仅是在配置文件中这么写

<context:component-scan base-package="tv.huan.weisp.web"/>

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

 

 可以发现这种扫描的粒度有点太大,如果你只想扫描指定包下面的Controller,该怎么办?此时子标签<context:incluce-filter>就起到了勇武之地。如下所示

<context:component-scan base-package="tv.huan.weisp.web .controller">  

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>   

</context:component-scan>  

这样就会只扫描base-package指定下的有@Controller下的java类,并注册成bean

但是因为use-dafault-filter在上面并没有指定,默认就为true,所以当把上面的配置改成如下所示的时候,就会产生与你期望相悖的结果(注意base-package包值得变化)

<context:component-scan base-package="tv.huan.weisp.web">  

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>   

</context:component-scan>  

此时,spring不仅扫描了@Controller,还扫描了指定包所在的子包service包下注解@Service的java类

此时指定的include-filter没有起到作用,只要把use-default-filter设置成false就可以了。这样就可以避免在base-packeage配置多个包名这种不是很优雅的方法来解决这个问题了。

另外在我参与的项目中可以发现在base-package指定的包中有的子包是不含有注解了,所以不用扫描,此时可以指定<context:exclude-filter>来进行过滤,说明此包不需要被扫描。综合以上说明

Use-dafault-filters=”false”的情况下:<context:exclude-filter>指定的不扫描,<context:include-filter>指定的扫描

分享到:
评论

相关推荐

    Delphi7.完美经典.part1

    &lt;br&gt;6-7-2 函数的分类与效用 &lt;br&gt;6-7-3 自定义函数使用方法概述 &lt;br&gt;6-7-4 函数的声明、定义及其实现 &lt;br&gt;6-7-5 参数传递方式 &lt;br&gt;6-7-6 声明修饰字 &lt;br&gt;6-7-7 常用的内建函数 &lt;br&gt;&lt;br&gt;第7章 Object Pascal面向对象...

    comerose-FlatStyle-v4.35-D7

    1.对于单个控件,COMPONET--&gt;INSTALL COMPONENT..--&gt;PAS或DCU文件--&gt;INSTALL; 2.对于带*.DPK文件的控件包,FILE--&gt;OPEN(下拉列表框中选*.DPK)--&gt;INSTALL即可; 3.对于带*.BPL文件的控件包,INSTALL PACKAGES--&gt;ADD--&gt;BPL...

    comeroseFlatStylev4.56.0.0FullSource

    1.对于单个控件,COMPONET--&gt;INSTALL COMPONENT..--&gt;PAS或DCU文件--&gt;INSTALL。 2.对于带*.DPK文件的控件包,FILE--&gt;OPEN(下拉列表框中选*.DPK)--&gt;INSTALL即可。 3.对于带*.BPL文件的控件包,INSTALL PACKAGES--&gt;ADD--&gt;...

    FlatStyle for D7 (窗体平面效果)

    2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可;3、对于带*.bpl文件的控件包,Install Packages--&gt;Add--&gt;bpl文件名即可;4、如果以上Install按钮为失效的话,试试Compile按钮;5、是...

    一个学生管理系统

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    delphi的控件安装方法

    ### Delphi的控件安装方法 #### 一、概述 Delphi是一款强大的集成开发环境(IDE),主要用于Windows应用程序的快速开发。它支持多种语言,包括Pascal和Object Pascal,并提供了丰富的类库和组件来帮助开发者高效地...

    4个delphi压缩包分割控件大全下载后合并为一个压缩包即可-part2

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    4个delphi压缩包分割控件大全下载后合并为一个压缩包即可-part3

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    4个delphi压缩包分割控件大全下载后合并为一个压缩包即可-part4

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    4个delphi压缩包分割控件大全下载后合并为一个压缩包即可

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    实用的学生管理学籍管理系统程序

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    DELPHI控件的安装和卸载方法

    对于单个控件,可以通过 Componet--&gt;install component--&gt;PAS 或 DCU 文件--&gt;install 的方式安装。对于带有 *.dpk 文件的控件包,可以通过 File--&gt;Open(*.dpk)--&gt;install 的方式安装。对于带有 *.bpl 文件的控件包,...

    13个delphi压缩包分割控件大全下载后合并为一个压缩包即可

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    Delphi-Code-一个挺大的学生管理程序,适合做毕业设计

    1、对于单个控件,Componet--&gt;install component..--&gt;PAS或DCU文件--&gt;install; 2、对于带*.dpk文件的控件包,File--&gt;Open(下拉列表框中选*.dpk)--&gt;install即可; 3、对于带*.bpl文件的控件包,Install Packages--&gt;...

    vxworks-componet-set.rar_VxWorks 视频_visual c_vxworks_vxworks 24

    标题中的"vxworks-componet-set.rar_VxWorks 视频_visual c_vxworks_vxworks 24"暗示了这个压缩包包含与VxWorks操作系统相关的组件设置、视频教程,以及可能与Visual C++的集成开发环境(IDE)有关的内容,可能专注...

    电视盒子开机自启动wifi热点功能代码,貌似路由器都能省了

    ...使用方法 1.电视盒子连有线网 2.配置好盒子正常上网 3.安装自己写好的程序 如果你发现有什么不合理的,需要改进的地方,请留言。或者可以通过 328452421@qq.com 联系我,非常感谢。 ...

    一个学生管理系统 ACCESS版

    只要您盯delphi的message消息框,相信不会有太大问题:)=====================================================================================基本安装 1、对于单个控件,Componet--&gt;install component..--&gt;PAS...

    delphi_第三方控件安装方法

    ### Delphi 中第三方控件的安装方法 在 Delphi 开发环境中,经常需要引入第三方控件来增强应用程序的功能性或简化开发过程中的复杂度。本文将详细介绍几种常用的第三方控件安装方法,帮助开发者快速掌握控件集成...

    CompoNet简介,PUB00161R1-Tech-Series-CompoNet

    【CompoNet简介】 CompoNet是一款专为分布式现场设备设计的工业网络,这些设备通常具有少量I/O点。该网络以高速通信为亮点,提供灵活的拓扑结构,简化布线工作,同时减少了故障排查和维护的工作量。CompoNet是采用...

Global site tag (gtag.js) - Google Analytics