Spring

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
    标签: Spring
    返回列表

    上一篇:Vim

    下一篇:Hibernate

    “Spring” 的相关文章

    Java BasePooledObjectFactory对象池化技术如何使用 - 开发技术

    本篇内容主要讲解“Java BasePooledObjectFactory对象池化技术如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java BasePooledObjectFactory对象池...

    视频转图像-cv2.VideoCapture()用法

    用途视频抽帧视频图像化 1、cap = cv2.VideoCapture(0) VideoCapture()中参数是0表示打开笔记本的内置摄像头参数是视频文件路径则打开 如cap = cv2.VideoCapture(“…/test.avi”) # 参数是视频文件路径则打开 cap...

    云客服系统有哪些优势?

    企业线上的日常服务和运营活动,可能会导致大量的售前、售中和售后问题。客户服务人员面临着大量的重复咨询和高工作量。因此,企业需要使用云客服系统来协助客户服务工作。那么云客服系统有哪些优势呢? 1.全渠道支持,方便消息管理。 云客服系统支持网页、APP、第三方工具等多种接入渠道。可以实现不同平台间的信息...

    PHP注释失败的原因是什么及怎么解决 - 编程语言

    这篇文章主要介绍了PHP注释失败的原因是什么及怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP注释失败的原因是什么及怎么解决文章都会有所收获,下面我们一起来看看吧。 一、注释符号使用不当PHP中常用...

    怎么使用Vue.js全选指令实现多选框的全选操作 - web开发

    这篇“怎么使用Vue.js全选指令实现多选框的全选操作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Vue.js全选指令实现多选框的全选操作”文...

    Python强大的任务调度框架Celery怎么使用 - 编程语言

    本篇内容介绍了“Python强大的任务调度框架Celery怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 什么是 celery这次我...