spring-core 中 asm 包的作用


asm包中主要有以下這些類

其中,

AnnotationVisitor類:是一個抽象類,定義在解析注解時會觸發的事件,如解析到一個基本值類型的注解、enum值類型的注解、Array值類型的注解、注解值類型的注解等。

AnnotationWriter類:繼承了 AnnotationVisitor 類,用於拼接注解相關字節碼。

Attribute類:字節碼中屬性的類抽象。

ByteVector類:字節碼二進制存儲的容器。

ClassReader類:字節碼的讀取與分析引擎。它采用類似SAX的事件讀取機制,每當有事件發生時,調用注冊的ClassVisitor、AnnotationVisitor、FieldVisitor、MethodVisitor做相應的處理。

ClassVisitor接口:定義在讀取Class字節碼時會觸發的事件,如類頭解析完成、注解解析、字段解析、方法解析等。

ClassWriter類:它實現了ClassVisitor接口,用於拼接字節碼。

Context類:定義了一些字節碼及其屬性。

CurrentFrame類:繼承自 Frame 類

 

轉載 :https://www.cnblogs.com/davidwang456/p/5652181.html

ASM的核心

在ASM的核心實現中,它主要有以下幾個類、接口(在org.objectweb.asm包中):
ClassReader類:字節碼的讀取與分析引擎。它采用類似SAX的事件讀取機制,每當有事件發生時,調用注冊的ClassVisitor、AnnotationVisitor、FieldVisitor、MethodVisitor做相應的處理。
ClassVisitor接口:定義在讀取Class字節碼時會觸發的事件,如類頭解析完成、注解解析、字段解析、方法解析等。

 A visitor to visit a Java class. The methods of this class must be called in the following order: <tt>visit</tt> [ <tt>visitSource</tt> ] [
<tt>visitOuterClass</tt> ] ( <tt>visitAnnotation</tt> |
 <tt>visitTypeAnnotation</tt> | <tt>visitAttribute</tt> )* (
 <tt>visitInnerClass</tt> | <tt>visitField</tt> | <tt>visitMethod</tt> )*
 <tt>visitEnd</tt>.

AnnotationVisitor接口:定義在解析注解時會觸發的事件,如解析到一個基本值類型的注解、enum值類型的注解、Array值類型的注解、注解值類型的注解等。

  A visitor to visit a Java annotation. The methods of this class must be
called in the following order: ( <tt>visit</tt> | <tt>visitEnum</tt> |
<tt>visitAnnotation</tt> | <tt>visitArray</tt> )* <tt>visitEnd</tt>.

FieldVisitor接口:定義在解析字段時觸發的事件,如解析到字段上的注解、解析到字段相關的屬性等。
MethodVisitor接口:定義在解析方法時觸發的事件,如方法上的注解、屬性、代碼等。

ClassWriter類:它實現了ClassVisitor接口,用於拼接字節碼。

A {@link ClassVisitor} that generates classes in bytecode form. More
 precisely this visitor generates a byte array conforming to the Java class file format. It can be used alone, to generate a Java class "from scratch",or with one or more {@link ClassReader ClassReader} and adapter class visitor to generate a modified class from one or more existing Java classes.

AnnotationWriter類:它實現了AnnotationVisitor接口,用於拼接注解相關字節碼。
FieldWriter類:它實現了FieldVisitor接口,用於拼接字段相關字節碼。
MethodWriter類:它實現了MethodVisitor接口,用於拼接方法相關字節碼。

SignatureReader類:對類定義、字段定義、方法定義、本地變量定義的簽名的解析。Signature因范型引入,用於存儲范型定義時的元數據(因為這些元數據在運行時會被擦除)。
SignatureVisitor接口:定義在解析Signature時會觸發的事件,如正常的Type參數、類或接口的邊界等。
SignatureWriter類:它實現了SignatureVisitor接口,用於拼接范型相關字節碼。

Attribute類:字節碼中屬性的類抽象。
ByteVector類:字節碼二進制存儲的容器。
Opcodes接口:字節碼指令的一些常量定義。
Type類:類型相關的常量定義以及一些基於其上的操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM