第
关于SpringBoot自定义条件注解与自动配置
目录自定义条件注解自定义自动配置SpringBoot的核心功能就是为整合第三方框架提供自动配置,而本文则带着大家实现了自己的自动配置和Starter,一旦真正掌握了本文的内容,就会对SpringBoot产生一览众山小的感觉。
自定义条件注解
在SpringBoot中,所有自定义条件注解其实都是基于@Conditional而来的,使用@Conditional定义新条件注解关键就是要有一个Condition实现类,该Condition实现类就负责条件注解的处理逻辑,该实现类所实现的matches()方法决定了条件注解的要求是否得到满足。
下面是自定义条件注解的Condition实现类的代码。
src/main/java/com/example/_003configtest/condition/MyCondition.java
packagecom.example._003configtest.condition;
importcom.example._003configtest.annotation.ConditionalCustom;
importorg.springframework.context.annotation.Condition;
importorg.springframework.context.annotation.ConditionContext;
importorg.springframework.core.env.Environment;
importorg.springframework.core.type.AnnotatedTypeMetadata;
importjava.util.Map;
publicclassMyConditionimplementsCondition{
@Override
publicbooleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata){
//获取@ConditionalCustom注解的全部属性,其中ConditionalCustom是自定义的注解
MapString,ObjectannotationAttributes=metadata.getAnnotationAttributes(ConditionalCustom.class.getName());
//获取注解的value属性值
String[]vals=(String[])annotationAttributes.get(value);
//env是perties或application.yml中配置的属性
Environmentenv=context.getEnvironment();
//遍历每个value的每个属性值
for(Stringval:vals){
//如果某个属性值对应的配置属性不存在,则返回false
if(env.getProperty(val.toString())==null){
returnfalse;
returntrue;
}
从上面的逻辑可以看到,自定义条件注解的处理逻辑比较简单:就是要求value属性所指定的所有配置属性必须存在,至于这些配置属性的值是什么无所谓,这些配置属性是否有值也无所谓。
有了上面的Condition实现类之后,接下来即可基于@Conditional来定义自定义条件注解。下面是自定义条件注解的代码。
src/main/java/com/example/_003configtest/annotation/ConditionalCustom.java
packagecom.example._003configtest.annotation;
importcom.example._003configtest.condition.MyCondition;
importorg.springframework.context.annotation.Conditional;
importjava.lang.annotation.*;
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
//只要通过@Conditional指定Condition实现类即可,该Conditio
您可能关注的文档
最近下载
- 电子级玻璃纤维布行业发展趋势.pptx VIP
- 新《刑事诉讼法》述评:以历史为视角.pdf VIP
- 2024年紫外固化材料项目可行性研究报告.docx VIP
- 【七上历史】期末复习材料分析题专练50题(原卷版).pdf VIP
- 2025版煤矿安全规程执行说明.docx VIP
- 国企竞岗面试题目及答案.doc VIP
- 土地开发整理项目规划设计规范(含条文说明).pdf VIP
- 专题26定量测定类综合性实验题(学生版+解析)-2023年高考化学毕业班二轮热点题型归纳与变式演练(新高考专用).pdf VIP
- 专题25化学实验综合性选择题(学生版+解析)-2023年高考化学毕业班二轮热点题型归纳与变式演练(新高考专用).pdf VIP
- 工器具洁具清洗验证方案.doc VIP
原创力文档

文档评论(0)