【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
生活随笔
收集整理的這篇文章主要介紹了
【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- springboot 2.0.0.RELEASE
- maven 3.5.0
自動掃描
默認掃描 @SpringBootApplication 類所在目錄及子目錄。
跳過掃描
@ComponentScan 搭配 excludeFilters
示例:
@ComponentScan(excludeFilters = @Filter(FilterType.ANNOTATION, classes = Controller.class))參考:https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/api/index.html?org/springframework/boot/context/TypeExcludeFilter.html
FilterType
public enum FilterType {/*** Filter candidates marked with a given annotation.* @see org.springframework.core.type.filter.AnnotationTypeFilter*/ANNOTATION,/*** Filter candidates assignable to a given type.* @see org.springframework.core.type.filter.AssignableTypeFilter*/ASSIGNABLE_TYPE,/*** Filter candidates matching a given AspectJ type pattern expression.* @see org.springframework.core.type.filter.AspectJTypeFilter*/ASPECTJ,/*** Filter candidates matching a given regex pattern.* @see org.springframework.core.type.filter.RegexPatternTypeFilter*/REGEX,/** Filter candidates using a given custom* {@link org.springframework.core.type.filter.TypeFilter} implementation.*/CUSTOM}FilterType.ANNOTATION 按注解類型排除
@SpringBootApplication @ComponentScan(excludeFilters = @Filter(FilterType.ANNOTATION, classes = Controller.class)) public class Application {public static void main(String[] args) throws IOException {SpringApplication.run(Application.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("startup done.");};} }FilterType.REGEX 正則表示達
@SpringBootApplication @ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern = {"net.sayyy.db.*"})) public class Application {public static void main(String[] args) throws IOException {SpringApplication.run(Application.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("startup done.");};} }FilterType.CUSTOM 自定義規則
@SpringBootApplication @ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = MyCustomerFilter.class)) public class Application {public static void main(String[] args) throws IOException {SpringApplication.run(Application.class, args);}@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("startup done.");};} }自定義過濾規則是需要實現 TypeFilter 接口
自定義掃描規則, 匹配類名中帶有 Service 的類
總結
以上是生活随笔為你收集整理的【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters的全部內容,希望文章能夠幫你解決所遇到的問題。