关于AOP,通常我们会使用AspectJ注解来做,共有6中切面

  • 前置:@Before
  • 后置:@After
  • 返回值:@AfterReturing
  • 异常:@AfterThrowing
  • 环绕:@Around:可以理解为以上四种的集合
  • 引用(不常用)

比较难理解的两个部分:

  • 连接点:JoinPoint、ProceedJoinPoint

    • 连接点其实就是切面表达式覆盖的方法,根据该连接点可以获取多个信息,常用的如下:

      • getSignature():获取当前方法的返回值、全类名、参数类型,例:Shop com.xxx.firstboot.dao.ShopDao.getShop(int)
      • getTarget():获取当前方法所属的类实例,例:com.xxx.firstboot.dao.ShopDao@72f97c4f
      • getArgs():获取当前方法的参数,例:[Ljava.lang.Object;@6fbd538a
    • JoinPoint习惯性的用在除了@Around中,ProceedJoinPoint习惯性的用在@Around中(因为需要使用ProceedJoinPoint的proceed()方法进行目标方法的执行)
  • 切点表达式:
    • execution(* com.xxx.firstboot.dao.*.*(..))只需要记住这一个就可以

      • 第一个*:代表任意权限和返回类型,例:public Shop,如果需要明确指定,就指定
      • 第二个*:代表这个包下的所有类,例:ShopDao,如果需要明确指定,就指定
      • 第三个*:代表类下的所有方法,例:getShop,如果需要明确指定,就指定
      • ..:代表方法的入参类型可以是任意类型、任意数量(包括0个)的,例:int,如果需要明确指定,就指定
    • 切点表达式就是方法(连接点)的匹配表达式

两个补充点:

    • 多个切面可以通过@Order(数字)这个注解来制定织入顺序,例:@Order(1),数字越小,越先织入,该注解用在切面上(即切面类上)
    • 切点表达式可以重用,如下会演示

from: https://www.cnblogs.com/java-zhao/p/5415893.html

第一章 AOP的更多相关文章

  1. Spring3实战第一章 Aop 切面 XML配置

    刚看spring3实战书籍第一章  切面以前没有关注过 现在看到了  随手试验一下 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Objec ...

  2. SSM-1第一章 认识SSM框架和Redis

    第一章 认识SSM框架和Redis   1.1 Spring框架 Sring理念  Ioc  控制反转  IOC是一个容器,在Spring中,它会认为一切Java资源都是JavaBean,容器的目标是 ...

  3. spring第一章

    spring第一章 一.概述 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的 ...

  4. Java开发工程师(Web方向) - 04.Spring框架 - 第3章.AOP技术

    第3章--AOP技术 Spring框架 - AOP概述 笔记https://my.oschina.net/hava/blog/758873Spring框架 - AOP使用 笔记https://my.o ...

  5. Spring实战第一章学习笔记

    Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...

  6. Spirng学习指南-第一章(完)

    Spring学习指南 内容提要 ​ Spring框架是以简化J2EE应用程序开发为特定目标而创建的,是当前最流行的Java开发框架. ​ 本书从介绍Spring框架入手,针对Spring4.3和Jav ...

  7. 第05章 AOP细节

    第05章 AOP细节 1.切入点表达式 1.1 作用 通过表达式的方式定位一个或多个具体的连接点. 1.2 语法细节 ①切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简 ...

  8. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  9. MyBatis3.2从入门到精通第一章

    第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...

随机推荐

  1. java 的反射机制

    一:介绍 1.大纲 #1 允许程序在执行期间,调用反射API取得任何类的内部信息,并且可以直接操作任何对象的内部属性和方法. #2 学习反射,需要掌握的知识点: *实例化class类 *获取类的完整结 ...

  2. [mysql] update……from……

    今天插入一条数据就像这样 limit ), , )) 然后报错: You can't specify target table 'categorys' for update in FROM claus ...

  3. [python]接口签名

    一个主机中的数据要通过外网发送数据给另外一个主机,为了保证接口安全,需要对接口进行签名,由于重放攻击貌似对这种接口无效,所以没有加入时间戳 直接放代码: #!/usr/bin/env python # ...

  4. Django 性能测试

    唐纳德·克努特(Donald Knuth)曾经说过:“不成熟的优化方案是万恶之源.”然而,任何一个承受高负载的成熟项目都不可避免地需要进行优化.在本文中,我想谈谈优化Web项目代码的五种常用方法.虽然 ...

  5. BZOJ.4695.最假女选手(线段树 Segment tree Beats!)

    题目链接 区间取\(\max,\ \min\)并维护区间和是普通线段树无法处理的. 对于操作二,维护区间最小值\(mn\).最小值个数\(t\).严格次小值\(se\). 当\(mn\geq x\)时 ...

  6. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

  7. ueditor上传图片设置的简单实例

    0.前言:我用过ckeditor,kingeditor还是感觉ueditor最好用,功能强大,经常更新.之前因为升级了struts2到2.5的了,原本的kingeditor已经不能共存,于是找到了ud ...

  8. 使用 IntraWeb (11) - 基本控件之 TIWButton

    所在单元及继承链: IWCompButton.TIWButton < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl & ...

  9. Fiddler可以支持Websocket抓包了

    今天试了一下,Fiddler已经可以支持客户端Websocket抓包了,并且查看的方式也非常方便. websocket作为一个标准的应用层的协议,在CS端程序用起来也比传统的tcp协议方便了,比较常见 ...

  10. Visual Studio 2012 调试程序加载缓慢,提示正在下载符号

    当在Visual Studio 2012中调试程序的时候,整个过程加载缓慢,并且有类似"正在下载符号......"的提示. 这是因为Visual Studio在调试的时候,默认从M ...