@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 @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则FilterType.REGEX 正则表示达FilterType.ANNOTATION 按注解类型排除
参考:https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/api/index.html?org/springframework/boot/context/TypeExcludeFilter.html
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 @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则FilterType.REGEX 正则表示达FilterType.ANNOTATION 按注解类型排除
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 @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则FilterType.REGEX 正则表示达
@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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则FilterType.REGEX 正则表示达
@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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则
@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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service"); FilterType.CUSTOM 自定义规则
@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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); @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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service");
@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); @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("startup done."); 自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类 public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service");
自定义过滤规则是需要实现 TypeFilter 接口自定义扫描规则, 匹配类名中带有 Service 的类
public class MyCustomerFilter implements TypeFilter { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.contains("Service");