带你读《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

相关文章
|
9月前
|
设计模式 Java Maven
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
|
9月前
|
移动中间件 网络协议 容灾
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
|
9月前
|
存储 Java API
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
|
9月前
|
JSON Java 测试技术
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
|
9月前
|
IDE 前端开发 Java
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(3)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(3)