最近在写微服务公共组件的切面时,被要求切点表达式最好可以通过各服务配置文件外部读取的方式获得。
最后发现使用SpringAop
说比较难以实现的,根本原因如下:
@Pointcut
的value
值需要一个编译期常量。
1、编译期简单来说就是从源码打包到jar包的过程,之后的运行期自然是类加载运行的过程。
2、编译期常量会在编译的时候直接将实际值编译成自己文件,即在编译期就能找到常量的值。
3、spring-aop的原理(除了运行时织入)就是在编译时就将其转换为经过切面代理的字节文件。