1、定义一个PointCut切入点:
注解:@PointCut表示切入点,value表示切入点的作用范围
2、定义一个Aspect切面:
注解:@Aspect 表示声明一个切面;
@Before,前置增强,方法执行前调用
@Around,环绕增强:方法正常执行前后调用
@AfterReturning,后置增强:方法正常退出时执行
@AfterThrowing,异常抛出增强:方法抛异常时执行
@After,final增强:不管是抛出异常或者正常退出都会执行
在@Around标注的方法中,proceed()方法必须写,proceed()方法将会调用url触发的controller层的方法。
综上,在@Around注解标记的方法中,也可以调用writeContent()方法来返回正确的数据给前端。 即:在注解@AfterThrowing、@Around处,都调用writeContent()来处理正常结果,或者异常结果给前端。 则相当于将controller层给前端的数据处理、异常处理、日志处理等,都交给AOP来处理,并且只需写一次,则可供所有的controller层代码共用,再也不用在每个controller中、每个method中写重复的数据处理、异常处理、日志处理等信息。
3、controller测试
4、正常情况运行结果:
5、异常情况运行结果:
觉得写得好,给一个赞哇!谢谢!