java动态代理谈AOP

tech2024-11-30  8

一、jdk动态代理

二、Cglib代理

除了以上两种能够动态生成代理class文件外,其实还有一种 不怎么被人谈起的java自身实现的代理

就是java的 Instrumentation(翻译过来就是调琴的意思)

有了这个以后编码人员可以构建一个独立于应用程序的代理程序,用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控,和 Java 类操作了,这样的特性实际上提供了 一种虚拟机级别支持的 AOP 实现方式,使得开发者无需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功能了

 

有了动态代理我们可以做什么?

我们做一件事是为了实现某个目的

比如说我们所有业务逻辑都已经写好,这个时候需要在每个业务方法逻辑执行前加入权限校验

这里有两种方式:

一种是比较繁琐的每个地方都加

第二种是每个类都生成动态代理,在执行业务方法前切入动态代理的权限校验逻辑即可,这就实现了一个动态切入,而且原来的业务逻辑都不需要改动

由此,我们扩展思考,假如加入日志,事务是不是也可以呢?答案是肯定的,这就是AOP

 

不妨回顾spring的织入

 

我们写好两段两段代码后,在配置文件中配置在业务方法前后,之后由spring动态给我们生成这个类的代理类,那么那两段代码就被织入

 

 

最新回复(0)