为什么Spring AOP需要代理类?

时间:2010-09-13 06:40:46

标签: java spring spring-aop

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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