Spring中AOP,@Aspect、@Pointcut优化冗余代码,不用在controller写重复代码了。

一、定义一个PointCut切入点:

  注解:@PointCut表示切入点,value表示切入点的做用范围 前端

二、定义一个Aspect切面:

  注解:@Aspect 表示声明一个切面;
  @Before,前置加强,方法执行前调用
  @Around,环绕加强:方法正常执行先后调用
  @AfterReturning,后置加强:方法正常退出时执行
  @AfterThrowing,异常抛出加强:方法抛异常时执行
  @After,final加强:无论是抛出异常或者正常退出都会执行
测试

    在@Around标注的方法中,proceed()方法必须写,proceed()方法将会调用url触发的controller层的方法。url

    针对异常处理,结果返回前端,能够在@AfterThrowing注解标记的方法中调用处理结果,返回前端;如图中的writeContent()方法。

  其中features参数为Json格式化时,须要保留的格式参数。

  综上,在@Around注解标记的方法中,也能够调用writeContent()方法来返回正确的数据给前端。 即:在注解@AfterThrowing、@Around处,都调用writeContent()来处理正常结果,或者异常结果给前端。 则至关于将controller层给前端的数据处理、异常处理、日志处理等,都交给AOP来处理,而且只需写一次,则可供全部的controller层代码共用,不再用在每一个controller中、每一个method中写重复的数据处理、异常处理、日志处理等信息。

三、controller测试

    此为controller的测试代码。UserEntity类为本身定义的一个实体类。

四、正常状况运行结果:

五、异常状况运行结果:

总结: 利用AOP来处理,让开发只关注业务逻辑,不用再重复每次url请求的数据处理、异常处理、try catch、log日志。


以为写得好,给一个赞哇!谢谢!
相关文章
相关标签/搜索