开始

本篇开始分析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的配置@AutowiredBraumProperties properties;//初始化@PostConstructpublic 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。

其他

更多源码解析关注我学源码网

braum源码分析(二)-EnableBraumConfiguration的实现相关推荐

  1. 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  2. SpringBoot源码分析(二)之自动装配demo

    SpringBoot源码分析(二)之自动装配demo 文章目录 SpringBoot源码分析(二)之自动装配demo 前言 一.创建RedissonTemplate的Maven服务 二.创建测试服务 ...

  3. gSOAP 源码分析(二)

    gSOAP 源码分析(二) 2012-5-24 flyfish 一 gSOAP XML介绍 Xml的全称是EXtensible Markup Language.可扩展标记语言.仅仅是一个纯文本.适合用 ...

  4. Android Q 10.1 KeyMaster源码分析(二) - 各家方案的实现

    写在之前 这两篇文章是我2021年3月初看KeyMaster的笔记,本来打算等分析完KeyMaster和KeyStore以后再一起做成一系列贴出来,后来KeyStore的分析中断了,这一系列的文章就变 ...

  5. 【投屏】Scrcpy源码分析二(Client篇-连接阶段)

    Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...

  6. Nouveau源码分析(二):Nouveau结构体的基本框架

    Nouveau源码分析(二) 在讨论Nouveau对Nvidia设备的初始化前,我准备先说一下Nouveau结构体的基本框架 Nouveau的很多结构体都可以看作是C++中的类,之间有很多相似的东西, ...

  7. ENS最新合约源码分析二

    ENS(以太坊域名服务)智能合约源码分析二 0.简介 ​ 本次分享直接使用线上实际注册流程来分析最新注册以太坊域名的相关代码.本次主要分析最新的关于普通域名注册合约和普通域名迁移合约,短域名竞拍合约不 ...

  8. 【转】ABP源码分析二:ABP中配置的注册和初始化

    一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数必然已完成了执行 ...

  9. Vue.js 源码分析(二十三) 指令篇 v-show指令详解

    v-show的作用是将表达式值转换为布尔值,根据该布尔值的真假来显示/隐藏切换元素,它是通过切换元素的display这个css属性值来实现的,例如: <!DOCTYPE html> < ...

最新文章

  1. php和架构,结构和架构的区别是什么?
  2. mysql数据库常用命令
  3. webpack预览页面配置
  4. 数据中心网络架构 — 传统数据中心网络 — 传统树型三层网络架构
  5. 神经网络neural network简单理解
  6. 使用互斥体使程序只运行一个
  7. spring体系结构_了解Spring Web应用程序体系结构:经典方法
  8. Eclipse下如何导入jar包
  9. 自定义的全局公共样式
  10. Android 开发之旅:深入分析布局文件又是“Hello World!”
  11. android 浏览器 原理,android 浏览器原理原码
  12. c 抄了java 多少东西,几款Java开发者必备常用的工具,准点下班不在话下
  13. SpringBoot之AOP切面的使用
  14. [LeetCode]题解(python):016-3Sum Closest
  15. 汇添富基金总经理张晖:以高质量发展打造中国最受认可的资产管理品牌
  16. 485通讯测试软件,485串口测试 RS485口测试方法
  17. 芯片的原理应用与分类
  18. CUDA优化LBP(loopy belief propegation)
  19. IDEA终端光标太粗怎么设置?及操作技巧
  20. 票啦啦--手机购电影票

热门文章

  1. Linux上使用at单一执行例行性工作,使用crontab循环执行例行性任务以及系统例行任务
  2. oracle标准发票分录,07应付发票录入:标准发票录入
  3. derby和mysql_关于derby数据库(新手教程)
  4. 基于BCoreBIM轻量化引擎搭建BIM云平台
  5. 我们每天都在忙些什么 (r7笔记第37天)
  6. C++ map的三种不同插入元素方法
  7. 数值分析(五):C++实现一般实矩阵的QR分解
  8. php使用FPDI获取PDF内容、合并PDF文件、导入模板
  9. 超强视频分割/剪辑软件:Ultra Video Splitter绿色便携版
  10. 同是“千亿”目标:伊利势在必得,蒙牛恐难实现