产业气象站|AOP的一个具体例子,Spring

新建一个Logging类:
我希望我的业务类的Java代码的方法 , 在执行前 , 执行后 , 返回方法后 , 以及抛出异常后 , 能够执行一些hook代码 。 这些hook代码就写在这个Logging类的对应方法里:
*beforeAdvice
*afterAdvice
*afterReturningAdvice
*AfterThrowingAdvice
产业气象站|AOP的一个具体例子,Spring
文章图片
业务代码就是StudentBean:在这个MainApp.java里 , 调用了StudentBean的两个方法:getName和getAge.我期望Logging类里定义的四个方法 , 可以被AOP织入 。
产业气象站|AOP的一个具体例子,Spring
文章图片
Beans.xml的内容要点:
(1)定义aop的命名空间:
产业气象站|AOP的一个具体例子,Spring
文章图片
(2)定义一个aspect , ref属性指向loggingBean:
产业气象站|AOP的一个具体例子,Spring
文章图片
pointcut:连接点 , 指定哪些切入点应该被执行 。 ID为selectAll , 结合expression表达式属性 , 说明期望logging的逻辑被织入所有advice并执行 。
(3)在com.sap.*下的所有bean的方法执行之前 , 执行loggingbean的beforeAdvice方法 。 以此类推 , 在com.sap.*下的所有bean的方法执行之后但尚未返回时 , 执行loggingbean的afterAdvice方法 。
产业气象站|AOP的一个具体例子,Spring
文章图片
从调用栈观察到 , Cglib也参与了pointcut的动态织入过程 。
产业气象站|AOP的一个具体例子,Spring
文章图片
【来源:汪子熙的游泳故事】
【产业气象站|AOP的一个具体例子,Spring】声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。 邮箱地址:newmedia@xxcb.cn