概念:

AOP——面向切面编程,通过预编译/动态代理实现程序功能的统一维护
主要功能是:日志、性能统计、安全控制、事务处理、异常处理

实现方式

  • 预编译——AspectJ
  • 动态代理——SpringAOP、JbossAOP

常用概念

  • Advice通知的类型

Spring的AOP实现

  • 纯Java实现,无需特殊编译,不需要控制类加载器
  • 只支持方法执行连接点
  • 目的是提供一种APO与SpringIOC之间的整合
  • 与AspectJ相比,SpringAOP并不全面

有接口和无接口的SpringAOP的区别(没看懂)

  • 有接口,默认使用标准JavaSErvice动态代理作为AOP代理
  • 无接口使用CGLIB代理

配置、切面实现、切入点,切入方式

Demo:
首先需要增加依赖包

在Spring.xml中配置切面

切入点

切面实现

带参切入方法实现

测试类

带参切入点测试结果

Introductions引入

  • 简介允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现来代表这些对象
  • 由 aop:aspect 中的 aop:declare-parents 元素声明该元素用于声明所匹配的类型拥有一个新的parent
    例如:有个Service提供server服务,想在不更改Service代码的前提下对该Service增加验证,即可以定义一个接口和实现,再通过Introductions为Service增加新的接口,使Service可以通过验证后再执行server
    Demo:
    声明一个接口,并提供实现

想要引入的类

配置

Test方法

执行结果

advisor

  • 就像一个小的自包含的方面,只有一个advice
  • 切面自身通过一个bean表示,并且必须实现某个advice接口,同事,advisor也可以很好的利用AspectJ的切入点表达式
  • Spring通过配置文件中的aop:advisor 元素支持advisor 实际使用中大多数情况下他会和transactional advice配合使用
  • 为了定义一个advisor的优先级以便让advice可以有序,可以使用order属性来定义advisor的顺序
    例如:该标签只是切入的另一种方式,只需要配置切入点和实现了通知接口的类即可实现切面
    Demo:
    配置

实现了Advice接口的实现类

切入点测试调用方法

测试

结果

最新文章

  1. javaScript获取url中的参数
  2. Go语言http包Form解析之坑
  3. Linq to 泛型集合查询集合包括大写M和年龄小于等于18
  4. LeetCode(二)
  5. 添加Ubuntu的库文件路径
  6. 农场阳光 (simpson)
  7. Ubuntu下sqlite3的安装及使用
  8. Linux系统PATH变量配置
  9. NodeJS学习笔记之MongoDB模块
  10. const关键字在C和C++区别
  11. poj 2393 Yogurt factory(dp+贪心)
  12. 循环获取<ul>下拉列表的的值。进行对比,正确的家样式
  13. 基于visual Studio2013解决面试题之1003字符串逆序
  14. 不要用for循环去遍历LinkedList
  15. 2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解
  16. 【sql注入教程】mysql注入直接getshell
  17. ant_<target>标签含义与使用
  18. VS发布web应用程序报:无法识别的特性“xmlns:xdt”。请注意特性名称区分大小写 或 未能将文件obj\...复制到obj\...未能找到路径
  19. list转map
  20. hdu 5094 状压bfs+深坑

热门文章

  1. Qt编写自定义控件22-蚂蚁线
  2. PAT 甲级 1024 Palindromic Number (25 分)(大数加法,考虑这个数一开始是不是回文串)
  3. 移动Windows Kits目录
  4. 如何为ubuntu等Linux系统扩容(LVM)
  5. OPC API 简介
  6. Arduino基础入门—3.连接 IIC 1602 LCD显示文字
  7. iostream
  8. Linux下配置APUE的编译 报错之后如何处理
  9. lua数据类型的的操作(三)
  10. Oracle的查询-子查询