Skip to content

Instantly share code, notes, and snippets.

关于@Pointcut的思考。

最近在写微服务公共组件的切面时,被要求切点表达式最好可以通过各服务配置文件外部读取的方式获得。

最后发现使用SpringAop说比较难以实现的,根本原因如下:

@Pointcutvalue值需要一个编译期常量。

1、编译期简单来说就是从源码打包到jar包的过程,之后的运行期自然是类加载运行的过程。
2、编译期常量会在编译的时候直接将实际值编译成自己文件,即在编译期就能找到常量的值。
3、spring-aop的原理(除了运行时织入)就是在编译时就将其转换为经过切面代理的字节文件。

@wutingjia
wutingjia / JVM_DEBUG.md
Created October 5, 2019 13:03
JVM_DEBUG

JVM_DEBUG

Java内存区域及溢出异常

java程序的运行过程中,jvm所管理的内存将会包含以下几个运行时数据区域。

程序计数器

解释:可以看作当前线程所执行的字节码的行号指示器,在概念模型里,字节码解释器就是通过改变这个技术器的值来选取下一条需要执行的字节码指令。

@wutingjia
wutingjia / javaagent.md
Created October 19, 2019 11:33
javaagent

javaagent

核心接口:ClassFileTransformer

public class MyClassTransformer implements ClassFileTransformer {

    /*实现ClassFileTransformer接口中的唯一方法。
     *用于对类的转换每加载一个类都会调用这个函数。
     * classfileBuffer 是这个类的二进制形式,即所说的操作字节码就是操作这个字节数组