ComponentScan
扫描包注解
excludeFilters:排除(Filter数组)
includeFilters:包括(Filter数组),默认过滤要设置为false;即useDefaultFilters=false
过滤的几种类型
FilterType.ANNOTATION : 按照注解
FilterType.ASSIGNABLE_TYPE : 按照指定的类型
FilterType.ASPECTJ : 使用ASPECTJ表达式 不常用
FilterType.REGEX : 使用正则表达式
FilterType.CUSTOM : 自定义规则
配置类
/**
* 配置类
* @author dwb
*
*/
@Configuration //告诉Spring 这是一个配置类
//@ComponentScan(value="com.dwb",includeFilters= {
// @Filter(type=FilterType.ANNOTATION, classes= {Controller.class, Service.class})
//},useDefaultFilters=false)
@ComponentScans(value= {
@ComponentScan(value="com.dwb",includeFilters= {
// @Filter(type=FilterType.ANNOTATION, classes= {Controller.class, Repository.class}),
// @Filter(type=FilterType.ASSIGNABLE_TYPE, classes= {BookService.class}),
@Filter(type=FilterType.CUSTOM, classes= {MyTypeFilter.class})
},useDefaultFilters=false)
})
//@ComponentScan value:指定要扫描的包
//excludeFilters = Filter[], 指定扫描的时候按照什么规则,排除什么规则
//excludeFilters= {@Filter(type=FilterType.ANNOTATION, classes= {Controller.class, Service.class}
//includeFilters = Filter[], 指定扫描的时候只需要包含哪些组件;使用需要useDefaultFilters=false,才能生效
//FilterType.ANNOTATION : 按照注解
//FilterType.ASSIGNABLE_TYPE : 按照指定的类型
//FilterType.ASPECTJ : 使用ASPECTJ表达式 不常用
//FilterType.REGEX : 使用正则表达式
//FilterType.CUSTOM : 自定义规则
public class MainConfig {
//给容器注册一个Bean;类型为返回值的类型,id默认是用方法名
@Bean("person")
public Person person01() {
return new Person("lisi", 20);
}
}
测试类
@Test
public void test01() {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String name : beanDefinitionNames) {
System.out.println(name);
}
}
网友评论