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

1、定义一个PointCut切入点:

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

2、定义一个Aspect切面:

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

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

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

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

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

3、controller测试

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

4、正常情况运行结果:

5、异常情况运行结果:

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


觉得写得好,给一个赞哇!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值