@ComponentScan
作用:配置包扫描规则
范围:主程序类上(被@SpringBootApplication修饰),或配置类上(被@Configuration修饰)
参数:value 指定要扫描的包,excludeFilters 配置排除规则,includeFilters 配包含规则
注意:要设置useDefaultFilters = false(系统默认为true,需要手动设置) includeFilters包含过滤规则才会生效。
@Filter
作用:配合@ComponentScan 使用,excludeFilters或includeFilters
参数:
type参数的值
FilterType.ANNOTATION:按照注解过滤
FilterType.ASSIGNABLE_TYPE:按照给定的类型过滤
FilterType.ASPECTJ:按照ASPECTJ表达式过滤
FilterType.REGEX:按照正则表达式过滤
FilterType.CUSTOM:按照自定义规则过滤
classes参数的值
如type参数为FilterType.ANNOTATION:按照注解过滤,classes的值可以为{Controller.class,Service.class}
如type参数为FilterType.ASSIGNABLE_TYPE:按照给定的类型过滤,classes的值可以为{类.class,自定义类.class}
基本使用:
@SpringBootApplication
//定义包扫描规则
@ComponentScan(
value = "com.example.learn20221218.bean",
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class, Service.class})},
includeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {Object.class})},
useDefaultFilters = false
)
public class Learn20221218Application {
public static void main(String[] args) {
SpringApplication.run(Learn20221218Application.class, args);
}
}