开始
本篇开始分析EnableBraumConfiguration。
starter主要是EnableBraumConfiguration的注解,下面分析这个注解对应的自动化配置。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EnableBraumConfiguration {
}
对应的autoconfiguration是BraumAutoConfiguration
@Configuration
@ConditionalOnBean(annotation = EnableBraumConfiguration.class)
@EnableConfigurationProperties(BraumProperties.class)
public class BraumAutoConfiguration {
//对应braum.limit.access的配置
@Autowired
BraumProperties properties;
//初始化
@PostConstruct
public void init() {
...
}
//注入核心bean,主要进行过滤处理
@Bean
@ConditionalOnMissingBean(name = {"braumProcessor"})
BraumProcessor BraumProcessor() {
return new BraumShieldProcessor();
}
//初始化缓存
@Bean(name = "braumCache")
Cache braumCache() {
BraumCacheType type = properties.getType();
if (type == BraumCacheType.REDIS) {
log.info("Enabling Braum cache: [Redis]");
return new RedisCache();
}
log.info("Enabling Braum cache: [Map]");
return new ConcurrentHashMapCache();
}
}
这里主要初始化了BraumShieldProcessor这个过滤的核心处理器,默认使用ConcurrentHashMap作为缓存,如果在BraumProperties配置缓存是Redis,还会通过BraumRedisAutoConfiguration初始化redis,返回RedisTemplate。
其他
更多源码解析关注我学源码网