【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方 在Spring MVC中的配置中一般会遇到这两个标签,作
2017-10-25 16:52
501 查看
转自:http://www.cnblogs.com/haoke/p/4604883.html
在Spring MVC中的配置中一般会遇到这两个标签,作为<context:component-scan>的子标签出现。但在使用时要注意一下几点:
1.在很多配置中一般都会吧Spring-common.xml和Spring-MVC.xml进行分开配置,这种配置就行各施其职一样,显得特别清晰。
在Spring-MVC.xml中只对@Controller进行扫描就可,作为一个控制器,其他的事情不做。
在Spring-common.xml中只对一些事务逻辑的注解扫描。
2.现在给定一个项目包的机构:
com.fq.controlller
com.fq.service
就先给定这两个包机构
(1)在Spring-MVC.xml中有以下配置:
<!-- 扫描@Controller注解 --> <context:component-scan base-package="com.fq.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
可以看出要把最终的包写上,而不能这样写base-package=”com.fq”。这种写法对于include-filter来讲它都会扫描,而不是仅仅扫描@Controller。哈哈哈,这点需要注意。他一般会导致一个常见的错误,那就是事务不起作用,补救的方法是添加use-default-filters=”false”。
(2)在Spring-common.xml中有如下配置:
<!-- 配置扫描注解,不扫描@Controller注解 --> <context:component-scan base-package="com.fq"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
可以看到,他是要扫描com.fq包下的所有子类,不包含@Controller。对于exculude-filter不存在包不精确后都进行扫描的问题。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充:
首先说明下,这个错误是可能导致。
context:component-scan默认可处理多种注解,添加include和exclude只是对里面的注解进行二次筛选,在这之前首先对use-default-filters属性,则默认为true,进行处理,他会默认把@Component等注解加到include中,等到在用include进行筛选时,它不仅包含@Controller了,导致最后不止有include中的注解类被初始化了。
一般来讲,事务处理的配置和mvc的配置不在一起,他们各自扫描注解起作用。可能就会出现覆盖问题,从而出现事务不起作用。
这个你可以看一下源代码。
相关文章推荐
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方 在Spring MVC中的配置中一般会遇到这两个标签,作为<
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- Spring配置文件中<context:include-filter>和<context:exclude-filter>
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>
- Spring 注解 <context:component-scan> 子标签 <context:exclude-filter > 和 <context:include-filter>区别
- 【SpringMVC】<context:include-filter>&&<context:exclude-filter>的坑
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>
- Spring配置文件<context:property-placeholder>标签使用漫谈
- springmvc mybatis 配置一对多的关系使用 <association> 及实体类写法2Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配自动为该对象填充属性值。支持
- Spring配置文件<context:property-placeholder>标签使用漫谈
- springMVC配置文件 <context:component-scan>使用说明
- <context:include-filter>和<context:exclude-filter>
- 使用SpringMVC 配置<mvc:default-servlet-handler/> 标签会报错
- 关于SpringMVC配置文件中使用<mvc:annotation-driven>标签报错的解 3ff0 决方式