ⅤⅠⅠ springboot 原理
1. auto config
1.1 Condition: 选择性的创建bean
注入一个Bean:@Configuration Class 下
@Bean 方法返回一个User,就获得name = "user"的Bean
@Conditional(实现类.class) => 决定Spring是否创建这个Bean
【需求1】导入Jedis坐标后创建Bean,否则失败
Condition实现类:
@Override 方法中:
boolean flag = true;
try{
Class<?> cls = Class.forName("redis.clients.jedis.Jedis");
}catch{
flag = false;
}
return flag;
【实验】导入Jedis dependency,测试成功;否则失败
【需求2】判断变成动态
@自定义注解("任意坐标")
方法返回一个User
创建自定义注解=> 加上 @Conditional(实现类.class)、C里元注解
加上attr String[] value()
=> 这样param传递到metadata里的map里,"value":[...]
=> 到Condition实现类中获取metadata.getAnnotationAttributes拿到Map
---
@ConditionalOnProperty(name = "A", havingValue = "B")
在配置文件中有key为A,值为B的时候...
Condition小结:
标签:SpringBoot,Bean,flag,Jedis,注解,Class,Condition From: https://www.cnblogs.com/sabertobih/p/18050562