zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Spring AOP的一个具体例子

SpringAOP 一个 例子 具体
2023-09-14 09:03:08 时间

新建一个Logging类:

我希望我的业务类的Java代码的方法,在执行前,执行后,返回方法后,以及抛出异常后,能够执行一些hook代码。这些hook代码就写在这个Logging类的对应方法里:

  • beforeAdvice
  • afterAdvice
  • afterReturningAdvice
  • AfterThrowingAdvice

业务代码就是Student Bean:在这个MainApp.java里,调用了Student Bean的两个方法:getName和getAge. 我期望Logging类里定义的四个方法,可以被AOP织入。

Beans.xml的内容要点:
(1) 定义aop的命名空间:

(2) 定义一个aspect,ref属性指向logging Bean:

pointcut:连接点,指定哪些切入点应该被执行。ID为selectAll,结合expression表达式属性,说明期望logging的逻辑被织入所有advice并执行。

(3) 在com.sap.*下的所有bean的方法执行之前,执行logging bean的beforeAdvice方法。以此类推,在com.sap.*下的所有bean的方法执行之后但尚未返回时,执行logging bean的afterAdvice方法。

从调用栈观察到,Cglib也参与了pointcut的动态织入过程。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":