面向切面思想在于它的干净,对逻辑代码没有任何侵入性,只需要在想要切入的方法或者类之上加上自定义的注解即可。
首先,就是自定义一个注解:

//这里我们定义一个名为 @MyPointer 的注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})//只能在方法上使用此注解
public @interface MyPointer{}
定义好一个注解之后呢,我们就可以定义我们这里的切点类

这里呢,我罗列一下我们常用的切面方法:

Before(前)  org.apringframework.aop.MethodBeforeAdvice
After-returning(返回后) org.springframework.aop.AfterReturningAdvice
After-throwing(抛出后) org.springframework.aop.ThrowsAdvice
Arround(周围) org.aopaliance.intercept.MethodInterceptor
Introduction(引入) org.springframework.aop.IntroductionInterceptor

不同的方法有不同的参数,比如下面的@AfterThrowing有一个throwing="e"的参数,传过来的就是我们切入的方法的报错信息。
而@AfterReturning会有一个returning="res"的参数,是方法的返回值。
接下来上代码:

@Aspect
@Component
@Slf4j
public class ModelViewAspect {//设置切入点:这里直接拦截被@MyPointer注解的方法@Pointcut("@annotation(com.XXX.XXX.MyPointer)")public void pointcut() { }/*** 当有MyPointer的注解的方法抛出异常的时候,做如下的处理*/@AfterThrowing(pointcut="pointcut()",throwing="e")public void afterThrowable(Throwable e) {log.error("切面发生了异常:", e);if(e instanceof  CustomException){throw ModelViewException.transfer((CustomException) e);}}
}

接下来只需要将定义好的注解放在你要切入的程序的位置即可。


@MyPointer
@GetMapping("/hallo")
public String index(Model model) {return model;
}

以上!

简单两步,spring aop上手即用即会相关推荐

  1. 简单两步解决Microsfot Edge浏览器打开PDF卡住的问题 - 【大鼓的电脑百科】

    Hi,我是大鼓,欢迎来到[大鼓的电脑百科],这是我们的第一篇文章,希望这篇文章可以帮到你! 前言 在日常使用中,有时候会遇到使用Microsoft Edge打开PDF时,Microsoft Edge会 ...

  2. 简单两步彻底根除系统多余输入法

    简单两步彻底根除系统多余输入法 大家想必都曾有过这样的遭遇:在Windows系统中不停地按下"Ctrl+Shift"组合键,以切换到你喜欢的输入法.每次都是这么切换来切换去的,是不 ...

  3. 机关办事必备!简单两步掌握一键卡复印技巧

    相信许多朋友都有过在机关单位办事的经历,在大多数机关单位,甚至是银行等场所,时常会有证件复印的需求.使用传统的复印设备进行证件/卡复印,操作过程往往相对繁琐,需要多次扫描以及多次手动送纸,在一些人流量 ...

  4. 简单两步,去除网站首页后缀index.html

    你们的网站还带着一个小尾巴,好low啊.太没技术含量了吧.这个公司正规吗? 公司网站的小尾巴,真的是又难看,又没技术含量.今天简单两步轻松去除. 一.修改默认主页设置 这这里我使用的是虚拟主机.登录阿 ...

  5. 简单两步自己动手制作联想windows7 sp1 64位旗舰版安装镜像文件windows7旗舰版主...

    本帖最后由cjg1823于2011-8-1722:39编辑 写在开篇的话:本文所述方法,仅供学习研究,请勿用于商业用途,否则后果自负!笔者本人不会向任何人提供成品. windows7旗舰版主题本文是参 ...

  6. 简单两步就能将 Laravel Log 信息发到其他平台上

    我们在写代码时,都想自己的代码尽可能的不影响现有的代码. 或者说,最大化不改动任何代码的情况下,如何嵌入我们的新功能?这是我们常说的「非侵入式」的开发方式. 使用「非侵入式」的开发模式,主要在提供第三 ...

  7. 利用Python简单两步监控电脑

    文章目录 一.利用python定时截取电脑桌面,保存到指定目录 二.将监控程序设置为开机自动启动 1.新建start.bat文件,打开输入以下代码: 2.将start.bat添加到任务计划 三.附注过 ...

  8. 【Spring Security】如何实现多设备同一时间只允许一个账号登录(即前登录用户被后登录用户挤下线)?只需简单两步!

    1.需求分析 在同一个系统中,我们可能只允许一个用户在一个终端上登录,一般来说这可能是出于安全方面的考虑,但是也有一些情况是出于业务上的考虑,需求就是业务原因要求一个用户只能在一个设备上登录. 要实现 ...

  9. 绿色软件下么——简单两步实现win 7上网自动拨号

    一般我们在家里上网的话用的都是宽带拨号上网,但是每次要上网就要手动拨号一次很麻烦,可不可以用自动拨号的形式在实现上网呢,当然可以了,其实步骤还是很简单的,只要两个步骤就能实现了. 第一步:建立拨号连接 ...

最新文章

  1. OpenCV学习笔记2---命名规约
  2. hihocoder 1490 Tree Restoration
  3. 【CyberSecurityLearning 20】xu ni zhuan yong wang luo
  4. HTTP之100-Continue
  5. 计算机二级选择题复习整理(公共基础部分)
  6. spring data整合elasticsearch的applicationContext.xml文件模板
  7. 空号检测平台使用说明
  8. 新版中日交流标准日本语多媒体版(全25CD)下载
  9. 微信开门,给你简单极致的开门体验!
  10. 直流有刷电机与无刷电机的区别
  11. 红蓝对抗--sliver 搭建
  12. Nginx 实现 https
  13. maven项目,pom.xml文件变成小虫子(蜘蛛)解决办法
  14. linux getfattr中文乱码,Linux下快速解析nf_conntrack
  15. c语言中数组名和数组名取地址理解
  16. 古董机wacom Bamboo CTL-660 手绘板win10系统驱动
  17. antd pro项目中 antd Upload组件 基于 lrz 在上传前做图片压缩
  18. confusion_matrix函数
  19. MATLAB:调用自己写的函数
  20. java 流式_Java核心教程5: 流式编程

热门文章

  1. 4 用python进行OpenCV实战之图像变换1(平移)
  2. RuntimeError: Expected object of device type cuda but got device type cpu for argument pytorch数据位置
  3. 命名实体识别NER遗留问题----模型构建
  4. 查看已安装tensorflow版本
  5. LeetCode简单题之较大分组的位置
  6. LeetCode简单题之至少是其他数字两倍的最大数
  7. TVM 高效保护隐私 ML
  8. GPU上的基本线性代数
  9. TensorRT PoolingLayer
  10. Lumen报class does not exist的mailer坑