为什么Spring AOP需要代理类?

0 java spring spring-aop

AOP中代理类的责任是什么?这有什么作用?

Boz*_*zho 5

动态代理用于在bean的方法之前/之后执行其他代码.最简单的例子是事务处理:

  • spring 你的bean 周围创建一个需要事务的代理
  • 如果一个方法被声明为transactiona(例如带注释@Transactional),则代理启动一个新事务并委托给real方法
  • 真正的方法执行并返回
  • 代理现在提交(或回滚)事务

因此,您的代码变得与事务无关.当一个事务bean被注入另一个时,它实际上是注入的代理(与bean的类型相同)

代理是动态的,因为spring在编译时不知道所有bean的类型,因此它必须在运行时创建代理.