1、Before 前置增强:如果需要在执行方法addCustomer之前,我们进行一些其它的业务操作,比如校验参数是否为空,这时候就可以使用前置增强Before来实现了。
2、After 后置增强:程序在运行时,先调用了前置增强,然后执行业务方法,后面再执行了后置增强;而此时,一旦在执行业务方法的时候抛出异常了,后置增强还是会被执行的;比如在业务方法中添加一个异常,然后运行程序。
3、Around 环绕增强:环绕增强是在调用业务方法之前和调用业务方法之后都可以执行响应的增强语法,也就是说:一个前置增强和一个后置增强相当于是组成了一个环绕增强;不同的是,在前置增强和后置增强中,在AOP中前置增强和后置增强只能拿到JoinPoint类,而在环绕增强中,可以拿到ProceedingJoinPoint类。
4、AfterReturning 最终增强:这个和后置增强有一点类似,都是在业务方法执行后执行。
5、AfterThrowing 异常增强:在业务方法调用是程序出现异常并且异常在没有被捕获的前提下所触发的,我们可以使用最终增强来记录程序的错误日志,以便于我们进行排错等。异常增强被触发,可以获取到当前请求的参数信息、时间信息等,记录到数据库或者是ELK等,以便于排错使用,并且这些逻辑和业务代码是分开的互不影响,很大程度上的解除代码耦合
同时,当业务方法中没有异常信息时,则不会触发异常增强;从这里可以看出在同一个AOP中的执行顺序 Around --> Before --> Around --> After --> AfterReturning --> AfterThrowing。
6、DeclareParents 引入增强:可以实现 一个Java类,没有实现A接口,在不修改Java类的情况下,使其具备A接口的功能。