springmvc-servlet.xml中use-default-filters的作用-程序员宅基地

技术标签: 【26】SpringMVC  SpringMVC  

       在ssm整合时,使用注解方式对相关bean进行管理,此时会出现一个问题SpringIOC容器和SpringMVC容器这两个容器对Bean管理的问题,一般情况下都是单单使用SpringMVC容器对@Controller注解标识的类进行管理,其他的类如@Service@Component、@Repository等注解标识的类由Spring容器来管理(SpringMVC容器中的类可以引用SpringIOC中的类反过来则不行),一般SpringMVC容器配置文件为:spring-mvc.xml ;Spring容器配置文件为:spring-context.xml, 这名字可以随意去,只不过两个文件是分开的,毕竟是两个框架,此时SpringMVC在配置扫描包时的配置规则如下: 

1、在spring-mvc.xml中,启用注解扫描,并定义组件查找规则 ,mvc层只负责扫描以@Controller 注解标注的Controller层

<context:component-scan base-package="com.nn.web.controller" use-default-filters="false">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
 </context:component-scan>

上述配置表明扫描器单单扫描context:include-filter指定的类即@Controller注解指定的类,use-default-filters="false"表示不使用默认的filters,use-default-filters="true"表示默认filters,默认filters指定全部的注解包括了@Controller、@Service、@Component、@Repository等,所以默认情况下只要没有显示指定为不使用默认的filters,  则context:component-scan base-package指定的扫描器都会只对相应的注解进行扫描。因此可以说use-default-filters="false"属性是专门和context:include-filter子标签一起使用,这样可以更加自由地指定哪些注解由扫描器扫描。其意思相当于:只扫描@xxx注解的标志的类。

 

2、在context:component-scan可以添加use-default-filters,spring配置中的use-default-filters用来指示是否自动扫描带有@Component、@Repository、@Service和@Controller的类。默认为true,即默认扫描。

3、如果想要过滤其中这四个注解中的一个,比如@Repository,可以添加<context:exclude-filter />子标签:

<context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="true">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

4、而<context:include-filter/>子标签是用来添加扫描注解的。

<context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

 

5、但是如果添加和排除的是相同,则必须include-filter在前,exclude-filter在后,否则配置不符合spring -context-3.0.xsd要求,Spring容器解析时会出错。上面的配置会把@Repository注解的类排除掉

<context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Thinkingcao/article/details/93493629

智能推荐

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

face++实现人脸识别及人脸相似度对比_face++人脸识别 html5-程序员宅基地

文章浏览阅读4.8k次。使用face++,先获取key和secret下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像处理控件 http_url =&amp;amp;amp;quot;https://a..._face++人脸识别 html5

desencrypt java md5_Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类-程序员宅基地

文章浏览阅读322次。很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;im..._java desencrypt.encrypt(pass)

BZOJ 2818 欧拉函数,线性筛_线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj-程序员宅基地

文章浏览阅读145次。题目链接:https://www.acwing.com/problem/content/description/222/给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤10^7输入样例:4..._线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj

使用 arm-linux-androideabi-addr2line 工具定位 libunity.so 崩溃问题-程序员宅基地

文章浏览阅读710次,点赞13次,收藏7次。它的名称有点不同 - aarch64-linux-android-addr2line。尽管该实用程序的名称不包含单词arm,但它成功地解密了arm64-v8下的堆栈跟踪,并通常感知arm64-v8的字符。是 NDK 自带的调试工具,可以用来分析 so 崩溃时输出的的内存地址。之后就是通过 cmd 进入到这个路径。找到了 64 位所需的实用程序。_arm-linux-androideabi

随便推点

接之前的SpringBoot项目通过金蝶中间件部署中未处理的问题_金蝶中间件部署项目-程序员宅基地

文章浏览阅读844次。接之前的SpringBoot项目通过金蝶中间件部署中未处理的问题新建的springboot项目是2.3.1的版本,打包到金蝶中部署就一直栈内存溢出后来把pom文件中的父依赖换成了2.2.4版本,打包部署到金蝶中就能运行了,我也不知道具体原因。如果有知道具体原因的请不吝赐教。..._金蝶中间件部署项目

基于鹰栖息算法优化的广义回归神经网络(GRNN)预测-程序员宅基地

文章浏览阅读934次,点赞18次,收藏17次。广义回归神经网络 CGRNN, Generalized Regression Neural Network)是美国学者 Don-aid F. Specht 在 1991 年提出的,它是径向基神经网络的一种。GRNN 具有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。GRNN在逼近 能力和学习速度上较 RBF 网络有更强的优势,网络最后收敛于样本量积聚较多的优化回归 面,并且在样本数据较少时,预测效果也好。此外,网络还可以处理不稳定的数据。

laravel 使用微信的图片内容检测及文字内容检测

微信的图片检测,需要文件大小在1M以内,这就导致用户上传大图的时候无法检测成功,

Zookeeper集群部署和单机部署

【代码】Zookeeper集群部署和单机部署。

linux ipv6端口转发,linux – TCP / IPv6通过ssh隧道-程序员宅基地

文章浏览阅读871次。是的,这是可能的并且不是太困难,但解决方案非常不理想,因为SSH在TCP上运行并且具有合理的开销.服务器必须在其配置文件sshd_config中:PermitTunnel point-to-point然后,您需要在两台计算机上都是root用户.您使用以下命令连接到服务器:ssh -w any root@server连接后,使用两个系统中的命令ip link来了解在每个系统中创建的tunN设备,并在..._ljnux上ipv6转发配置