use-default-filters为true时调用了下面的代码,在includeFilters列表中添加了Component、ManagedBean和Named,因此use-default-filters的值直接影响includeFilters的内容,而includeFilters的容直接影响了要扫描的内容,因此use-default-filters的值是否配置也就决定了整体要扫描的内容。 protectedvoidregisterDefaultFilters() {this....
解决办法是:在spring-mvc.xml配置文件中的context:component-scan标签中使用use-default-filters=“false”禁用掉默认的行为。
3、如果没有配置<context:component-scan>的use-default-filters属性,则默认为true,在创建ClassPathBeanDefinitionScanner时会根据use-default-filters是否为true来调用如下代码: Java代码 收藏代码 protected void registerDefaultFilters() { this.includeFilters.add(new AnnotationTypeFilter(Component.class)); ClassLoader...
protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) { // 1.解析use-default-filters属性,默认为true,用于指示是否使用默认的filter boolean useDefaultFilters = true; if (element.hasAttribute(USE_DEFAULT_FILTERS_ATTRIBUTE)) { useDefaultFilters = Boolean.value...
use-default-filters:指定是否使用默认的过滤器。默认为true,表示使用默认过滤器。 include-filter:指定要包含的过滤器。可以使用正则表达式或自定义过滤器类型。 exclude-filter:指定要排除的过滤器。同样可以使用正则表达式或自定义过滤器类型。 <component-scan>的优势在于它可以减少手动配置的工作量,提高开发效率。通过...
<!-- 只扫描@Controller注解 --> <context:component-scan base-package="com.xxx.controller" use-default-filters="false" > <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> spring.xml <!-- 配置扫描注解,不扫描@Controller注...
<context:component-scan>提供兩個子標籤:<context:include-filter> 和<context:exclude-filter>各代表引入和排除的過濾。而上例把use-default-filters屬性設為 false,意即在base-package所有被宣告為@Component和@Configuration等target Class不予註冊為bean,由filter子標籤代勞。
所以通过官方的描述可以看出原来是使用错误导致的。也就是说如果想让项目中的context:include-filter/生效就必须要加use-default-filters=”false” 否则 spring还是会扫描包下面的以下注解 @Component, @Repository, @Service, @Controller, or @Configuration....
下可以拥有若干个 和 子节点。默认fileter(use-default-filters="true")将扫描所有注解组件,若想使用 include-filter等,则将其改为false。如下所示一个复杂的** <context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class"use-default-filters="true"><!-- 只包含Repositor...
服务器启动application.xml先执行,此时use-default-filters=true是默认值会扫描(@Component、@ManagedBean、@Named),@Component是@Service、@Repository、@Controller的子集,但会被context:exclude-filter过滤到Controller,留下Service、Repository、Component 接着加载Spring-mvc.xml,此时use-default-filters=false,则是会检索...