带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)

简介: 带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)

带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(5)https://developer.aliyun.com/article/1339673?groupCode=taobaotech


生成相关源代码,一个源文件采用一个特定的代码生成器生成,各个类的生成器继承AbstractGenerator

image.png

源代码生成类:HandlerGenerator#gen

 

下面以HandlerGenerator#gen 为例:

fun gen() {
// 生成类
val handlerTypeBuilder = TypeSpec.interfaceBuilder(desc.handlerRawClassName)
.addTypeVariables(desc.entityDeclaredTypeVariables)
.addModifiers(Modifier.PUBLIC)
// 构建handlerContext参数
val contextParam = ParameterSpec.builder(
desc.handlerContextTypeName, desc.handlerContextRawClassName.asFieldName()
).build()
// 为原来接口的每个方法额外添加handlerContext参数desc.entityMethods.forEach {
val operationMethod = createMethodSpecBuilder(it.executableElement)
.addParameter(contextParam)
.build()
handlerTypeBuilder.addMethod(operationMethod)
}
// 生成源码
javaFileBuilder(desc.handlerRawClassName.packageName(), handlerTypeBuilder.build())
.build()
.writeTo(filer)
}

 

 

编译Debug探秘

 

可以通过Idea Maven自带的Debug工具 调试编译过程

image.png在项目的maven compile上右键,点击Debug '${moduleName}'

image.png在AutoPipelineProcessor#process方法上加上断连,即可断点Debug源码

image.png

 

 

带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)https://developer.aliyun.com/article/1339671?groupCode=taobaotech

相关文章
|
Java 测试技术 应用服务中间件
常见 Java 代码缺陷及规避方式(下)
常见 Java 代码缺陷及规避方式(下)
289 0
|
缓存 NoSQL Java
Java工具篇之Guava-cache内存缓存
常在业务系统中做开发,不会点高级知识点,有点不好意思了。在业务系统中,提高系统响应速度,提供系统高并发能力,其实方向很简单,三个方向,六个字而已: **缓存降级限流。** 当然这是在排除代码质量非常差的情况,如果代码质量很差,都是while循环和高内存占用,那么其实再怎么做都于事无补。除非你有一个马云爸爸,性能不够,机器来凑嘛。阿里云前来支持(1000台机器够了吗?)
1574 0
|
存储 缓存 算法
Streaming System 第一章:Streaming 101
简介 Streaming101起源于在O'really上发表的两篇博客,原文如下:https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102其中对流式计算的设计理念做了非常透彻的介绍。
10637 0
|
6月前
|
设计模式 算法 前端开发
【设计模式】【行为型模式】职责链模式(Chain of Responsibility)
一、入门 什么是职责链模式? 职责链模式是一种行为设计模式,它允许你将请求沿着一条链传递,直到有对象处理它为止。每个对象都有机会处理请求,或者将其传递给链中的下一个对象。 为什么需要职责链模式? 使用
257 16
|
存储 开发工具 数据安全/隐私保护
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用Git进行版本控制
在 HarmonyOS 项目开发中,Git 版本控制可以帮助开发者规范地管理代码变更,确保协作流程顺畅。本篇将详细介绍从创建项目、提交代码到 Git 远程仓库,再到修改、推送更新的完整操作流程,重点演示如何使用 Git 和 GitHub 进行身份验证和版本管理。
572 3
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用Git进行版本控制
|
8月前
|
设计模式 XML 算法
策略模式(Strategy Pattern)深度解析教程
策略模式属于行为型设计模式,通过定义算法族并将其封装为独立的策略类,使得算法可以动态切换且与使用它的客户端解耦。该模式通过组合替代继承,符合开闭原则(对扩展开放,对修改关闭)。
|
11月前
|
IDE 开发工具
【开发IDE升级】如何对IDEA版本进行升级
本文介绍了如何将 IntelliJ IDEA Ultimate 从 2020.2.2 版本升级到 2022.3.2 版本。主要内容包括准备工作、卸载旧版本和安装新版本的步骤。首先,从官网下载所需版本并备份旧版配置;接着,通过 Uninstall.exe 卸载旧版,保留配置和插件;最后,安装新版并完成激活。详细的操作步骤和截图帮助用户顺利完成升级过程。
12239 1
【开发IDE升级】如何对IDEA版本进行升级
|
存储 缓存 监控
性能利器Caffeine缓存全面指南
通过以上指南,您应该能够有效利用Caffeine缓存来优化您的Java应用程序。Caffeine的强大功能和灵活性,使它成为提升应用性能的理想选择。
819 4
|
缓存 Java Spring
Guava缓存工具类封装和使用
Guava缓存工具类封装和使用
394 0
|
监控 安全 Java
常见 Java 代码缺陷及规避方式(中)
常见 Java 代码缺陷及规避方式(中)
270 1