package com.tgb.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; /** * Advice通知类 * 测试after,before,around,throwing,returning Advice. * @author Admin * */ public class XMLAdvice { /** * 在核心业务执行前执行,不能阻止核心业务的调用。 * @param joinPoint */ private void doBefore(JoinPoint joinPoint) { System.out.println("-----doBefore().invoke-----"); System.out.println(" 此处意在执行核心业务逻辑前,做一些安全性的判断等等"); System.out.println(" 可通过joinPoint来获取所需要的内容"); System.out.println("-----End of doBefore()------"); } /** * 手动控制调用核心业务逻辑,以及调用前和调用后的处理, * * 注意:当核心业务抛异常后,立即退出,转向After Advice * 执行完毕After Advice,再转到Throwing Advice * @param pjp * @return * @throws Throwable */ private Object doAround(ProceedingJoinPoint pjp) throws Throwable { System.out.println("-----doAround().invoke-----"); System.out.println(" 此处可以做类似于Before Advice的事情"); //调用核心逻辑 Object retVal = pjp.proceed(); System.out.println(" 此处可以做类似于After Advice的事情"); System.out.println("-----End of doAround()------"); return retVal; } /** * 核心业务逻辑退出后(包括正常执行结束和异常退出),执行此Advice * @param joinPoint */ private void doAfter(JoinPoint joinPoint) { System.out.println("-----doAfter().invoke-----"); System.out.println(" 此处意在执行核心业务逻辑之后,做一些日志记录操作等等"); System.out.println(" 可通过joinPoint来获取所需要的内容"); System.out.println("-----End of doAfter()------"); } /** * 核心业务逻辑调用正常退出后,不管是否有返回值,正常退出后,均执行此Advice * @param joinPoint */ private void doReturn(JoinPoint joinPoint) { System.out.println("-----doReturn().invoke-----"); System.out.println(" 此处可以对返回值做进一步处理"); System.out.println(" 可通过joinPoint来获取所需要的内容"); System.out.println("-----End of doReturn()------"); } /** * 核心业务逻辑调用异常退出后,执行此Advice,处理错误信息 * @param joinPoint * @param ex */ private void doThrowing(JoinPoint joinPoint,Throwable ex) { System.out.println("-----doThrowing().invoke-----"); System.out.println(" 错误信息:"+ex.getMessage()); System.out.println(" 此处意在执行核心业务逻辑出错时,捕获异常,并可做一些日志记录操作等等"); System.out.println(" 可通过joinPoint来获取所需要的内容"); System.out.println("-----End of doThrowing()------"); } }
最近下载更多
1358849392 LV21
1月22日
丨灼灼其华丨 LV1
2020年12月21日
759985221 LV8
2020年8月12日
cz206616 LV10
2020年5月31日
liuwenlong LV20
2019年12月28日
hey_two LV3
2019年12月3日
bdkwxz LV10
2019年10月29日
Rommel LV27
2019年8月29日
车尔尼小鹿鹿 LV12
2019年8月27日
不期而遇则缘 LV9
2019年5月1日
最近浏览更多
1358849392 LV21
1月22日
三几个 LV11
2023年5月23日
女王不该在山炮村养花 LV8
2023年4月6日
我就一大帅比
2023年2月16日
暂无贡献等级
00044304 LV6
2022年8月23日
yyh1252 LV8
2022年8月8日
1234mama LV19
2022年3月10日
lf_123 LV3
2021年7月5日
alexcheung LV3
2021年6月23日
thecl1 LV1
2021年6月21日