AOP的本质还是动态代理对方法调用进行增强。

  SpringBoot 提供了方便的注解实现自定义切面Aspect。

  1、使用需要了解的几个概念:

            切面、@Aspect

            切点、@Pointcut、

            通知、@Before/@After/@Around/@AfterReturning/@AfterThrowing

  2、Pointcut expression表达式规则 

    Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的.
    Pointcut可以有下列方式来定义或者通过通配符&& || !的方式进行组合.

    args()、@args() 

    execution()

    this()

    target() 、@target()

       within()、@within()

    @annotation

举例说明:
  任意公共方法的执行:
  execution(public * *(..))

  任何一个以“set”开始的方法的执行:
  execution(* set*(..))‘


  AccountService 接口的任意方法的执行:
  execution(* com.xyz.service.AccountService.*(..))

  定义在service包里的任意方法的执行:
  execution(* com.xyz.service.*.*(..))

  定义在service包和所有子包里的任意类的任意方法的执行:
  execution(* com.xyz.service..*.*(..))

  定义在pointcutexp包和所有子包里的JoinPointObjP2类的任意方法的执行:
  execution(* com.test.spring.aop.pointcutexp..JoinPointObjP2.*(..))")
  ***> 最靠近(..)的为方法名,靠近.*(..))的为类名或者接口名,如上例的JoinPointObjP2.*(..))

  pointcutexp包里的任意类.
  within(com.test.spring.aop.pointcutexp.*)

  pointcutexp包和所有子包里的任意类.
  within(com.test.spring.aop.pointcutexp..*)

  实现了Intf接口的所有类,如果Intf不是接口,限定Intf单个类.
  this(com.test.spring.aop.pointcutexp.Intf)
  ***> 当一个实现了接口的类被AOP的时候,用getBean方法必须cast为接口类型,不能为该类的类型.

  带有@Transactional标注的所有类的任意方法.
  @within(org.springframework.transaction.annotation.Transactional)
  @target(org.springframework.transaction.annotation.Transactional)

  带有@Transactional标注的任意方法.
  @annotation(org.springframework.transaction.annotation.Transactional)
  ***> @within和@target针对类的注解,@annotation是针对方法的注解

  参数带有@Transactional标注的方法.
  @args(org.springframework.transaction.annotation.Transactional)

  参数为String类型(运行是决定)的方法.
  args(String)

    

这篇文章写得不错可参考:https://www.jianshu.com/p/fbbdebf200c9

SpringBoot AOP注解式拦截与方法规则拦截的更多相关文章

  1. SpringBoot —— AOP注解式拦截与方法规则拦截

    AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件. SpringBoot中AOP的使用 ...

  2. 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

    上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...

  3. Struts2拦截指定方法的拦截器

    作者:禅楼望月 默认情况下,我们为一个Action配置一个拦截器,该拦截器会拦截该Action中的所有方法,但是有时候我们只想拦截指定的方法.为此,需要使用struts2拦截器的方法过滤特性. 要使用 ...

  4. AOP注解式拦截

    1. 自己定义的拦截注解 package com.spring.aop; import java.lang.annotation.Documented; import java.lang.annota ...

  5. 10.SpringMVC注解式开发-处理器方法的参数

    1.逐个参数接收 只要保证请求参数名与该请求处理方法的参数名相同即可 // 请求参数名 与该处理器中的请求方法的参数名相同 ,即可接收前台传递过来的参数 public ModelAndView met ...

  6. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  7. SpringBoot aop 注解 数据权限校验

    注解类: @Retention(RetentionPolicy.RUNTIME) public @interface DataAuthValid { //位置 public int index() d ...

  8. springboot的注解声明过滤器配置错误导致拦截所有请求。

    究其原因, 原来spring 扫包时候 扫了Webfilter 注解,注册了一次过滤匹配路径,扫了Component注解(又注册了一次过滤匹配路径,默认是全路径). Component注解后于WebF ...

  9. springmvc 注解式开发 处理器方法的返回值

    1.返回void -Ajax请求 后台: 前台: 返回object中的数值型: 返回object中的字符串型: 返回object中的自定义类型对象: 返回object中的list: 返回object中 ...

随机推荐

  1. 在linux下进行数据备份

    一.完全备份 完全备份是指把所有需要备份的数据全部备份.当然,完全备份可以备份整块硬盘.整个分区或某个具体的目录.完全备份的好处是数据恢复方便,因为所有的数据都在同一个备份中,所以只要恢复完全备份,所 ...

  2. linux系统中启动mysql方式已经客户端如和连接mysql服务器

    零点间的记录 一.启动方式1.使用linux命令service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start3.使 ...

  3. java源码--ArrayList

    1.1.ArrayList概述 1)ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类. 2)该类封装了一个动态再分配的Object[]数组,每一个类对象都有一个capac ...

  4. Laravel框架与ThinkPHP框架的不同

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  5. idea 如何加入插件SonarLint

    idea 如何加入插件SonarLint   IDEA的插件安装有两种方法:一是在线安装:二是离线安装,即将插件的安装包下载以后从本地安装.   一.在线安装的过程:         1.打开IDEA ...

  6. python以不同方式打印输出九九乘法表

    参考:http://www.cnblogs.com/suiy-160428/p/5594389.htmlpython输出 9*9 乘法口诀表 矩形输出九九乘法表: for i in range(1,1 ...

  7. DaemonSet和StatefulSet

    DaemonSet 的使用 通过该控制器的名称我们可以看出它的用法:Daemon,就是用来部署守护进程的,DaemonSet用于在每个Kubernetes节点中将守护进程的副本作为后台进程运行,说白了 ...

  8. 关于FSM的C语言实现与详解

    最近一个项目有一个需求,考量了一下决定使用状态机,实现完需求以后,不得不感慨,状态机在处理逻辑上面实现起来很有优势,也便于管理. 在这里分享一下我所修改的状态机实现.改动的地方不多,参考了<C语 ...

  9. Codeforces 1097F. Alex and a TV Show

    传送门 由于只要考虑 $\mod 2$ 意义下的答案,所以我们只要维护一堆的 $01$ 容易想到用 $bitset$ 瞎搞...,发现当复杂度 $qv/32$ 是可以过的... 一开始容易想到对每个集 ...

  10. C#picturebox控件图片以json格式上传java后台保存

    关于winform上传图片到Java后端,保存到数据库,有多种方法,本文主要介绍利用picturebox控件,点击按钮上传图片,将图片转化为base64格式,以json格式上传到Java后台,再从ja ...