springboot_annotation
springBoot @Configuration @Lazy
@ComponentScan 使用
ComponentScan 就是基本的扫描spring的注解包
注意点:如果要用到springboot的Filters属性,那么需要把useDefaultFilters设置成false,否则filter失效
@ComponentScan(value=”com.melon.web”,
includeFilters={@Filters(type=FilterType.ANNOTATION,classes={Controller.class}},
useDefaultFilters=false)
如果useDefaultFilters不设置false,那么includeFilters就不生效,走的是默认的配置,
所以一般情况下你要用到Filter就要设置useDefaultFilters=false
FilterType默认按注解过滤
- 指定注解类型比如@Controller
@Filters(type=FilterType.ANNOTATION,classes={Controller.class}
- 过滤指明具体类
@Filters(type=FilterType.ASSIGNABLE_TYPE,classes={MyController.class}
- 自定义类型
@Filters(type=FilterType.CUSTOM,classes={MyFilter.class}
MyFilter 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class MyTypeFilter implements TypeFilter {
/**
*
* @param metadataReader 读取当前正在扫描类的信息
* @param metadataReaderFactory 可以获取到其他任何类信息
* @return
* @throws IOException
*/
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
//获取当前类注解的信息
AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
//获取扫描类的信息
ClassMetadata classMetadata = metadataReader.getClassMetadata();
//获取扫描类资源(类路径)
Resource resource = metadataReader.getResource();
if(classMetadata.getClassName().contains("Order")){
return true;
}
return false;
}
}
@Lazy
@Lazy主要跟@Bean搭配,专门针对单列bean,容器起来时候不加载,不生成bean
等去getBean的时候再去加载,生成bean
原文作者: 西瓜哥
原文链接: http://yoursite.com/2019/07/20/springboot-annotation/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)