spring 排除指定的类或者包扫描

Posted 大熊歪歪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 排除指定的类或者包扫描相关的知识,希望对你有一定的参考价值。

<!-- 排除Controller注解的扫描 -->
<context:component-scan base-package="exampleBean">
    <context:exclude-filter type="annotation"
        expression="org.springframework.stereotype.Controller" />
</context:component-scan>


<!-- 排除扫描符合正则表达式的类,此处排除com.wx.comm.util包下的所有类 -->
<context:component-scan base-package="exampleBean">
    <context:exclude-filter type="regex"
        expression="com.wx.comm.util.*" />
</context:component-scan>


<!-- 排除指定包exampleBean下的CommFF类的扫描 -->
<context:component-scan base-package="exampleBean">
    <context:exclude-filter type="assignable"
        expression="exampleBean.CommFF" />
</context:component-scan>

参考:https://docs.spring.io/spring/docs/4.3.12.RELEASE/spring-framework-reference/htmlsingle/

7.10.4 Using filters to customize scanning

By default, classes annotated with @Component@Repository@Service@Controller, or a custom annotation that itself is annotated with @Component are the only detected candidate components. However, you can modify and extend this behavior simply by applying custom filters. Add them as includeFilters or excludeFiltersparameters of the @ComponentScan annotation (or as include-filter or exclude-filter sub-elements of the component-scan element). Each filter element requires the type and expression attributes. The following table describes the filtering options.

Filter TypeExample ExpressionDescription

annotation (default)

org.example.SomeAnnotation

An annotation to be present at the type level in target components.

assignable

org.example.SomeClass

A class (or interface) that the target components are assignable to (extend/implement).

aspectj

org.example..*Service+

An AspectJ type expression to be matched by the target components.

regex

org.example.Default.*

A regex expression to be matched by the target components class names.

custom

org.example.MyTypeFilter

A custom implementation of the org.springframework.core.type .TypeFilter interface.

 

The following example shows the configuration ignoring all @Repository annotations and using "stub" repositories instead.

@Configuration
@ComponentScan(basePackages = "org.example",
        includeFilters = @Filter(type = FilterType.REGEX, pattern = ".*Stub.*Repository"),
        excludeFilters = @Filter(Repository.class))
public class AppConfig {
    ...
}

 

以上是关于spring 排除指定的类或者包扫描的主要内容,如果未能解决你的问题,请参考以下文章

Spring 注解--IOC篇

学习笔记——Spring中组件扫描(包含扫描排除扫描)Spring中完全注解开发;Spring整合Junit4步骤

Spring 的类扫描器分析 - ClassPathBeanDefinitionScanner

Dubbo源码学习整合Spring 容器实现服务优雅启动和停止

springboot 启动排除某些bean 的注入

Spring注解