一.AOP 面向切面编程思想

横向重复,纵向抽取

以前的案例中: filter中, 动态代理 , interceptor

二.动态代理

1.通过动态代理可以体现aop思想

2.对目标对象中的方法进行增强

三.spring实现aop的原理

  1. 动态代理(优先)

    被代理对象必须要实现接口,才能产生代理对象,如果没有接口将不能使用动态代理技术
  2. cglib代理(没有接口)

    第三方代理技术,cglib代理.可以对任何类生成代理.代理的原理是对目标对象进行继承代理. 如果目标对象被final修饰.那么该类无法被cglib代理.

四.spring aop开发:可以对任何类进行代理增强

spring封装了动态代理代码.不需要手写动态代理代码.封装了cglib代理.

五.spring中名词:

Joinpoint(连接点): 目标对象中,所有可以增强的方法

Pointcut(切入点): 目标对象,已经或需要增强的方法

advice(通知/增强): 需要增强的代码.

weaving(织入): 动词.将通知应用到切点的过程.

target(目标对象): 被代理对象.

proxy(代理对象): 将通知织入到目标对象之后,形成代理对象

aspect(切面): 切入点+通知

六.步骤

  1. 导包

    4+2:核心包+日志包

    2:spring中aop+aspect

    2:spring依赖包:aop联盟+weaving

  2. 准备目标对象

  3. 准备通知类

    前置通知

    后置通知 方法正常结束

    环绕通知

    异常拦截通知

    后置通知 无论如何都执行

  4. 配置文件中配置,导入aop约束

    • 目标对象

    • 通知对象

    • 配置aop:config

      <aop:config>
      <aop:ponint-cut id="切点名称" expression="execution(切点表达式)" />
      <aop:aspect ref="通知对象名称" >
      <aop:before method="" ponintcut-ref="" />
      <aop:after-returning method="" ponintcut-ref="" />
      <aop:around method="" ponintcut-ref="" />
      <aop:after-throwing method="" ponintcut-ref="" />
      <aop:after method="" ponintcut-ref="" />
      </aop:aspect>

七.扩展:使用注解完成aop

  1. 导包

    4+2

    2 aop+aspect

    2 aop联盟+weaving

  2. 准备目标对象

  3. 准备通知类

    前置通知

    后置通知 方法正常结束

    环绕通知

    异常拦截通知

    后置通知 无论如何都执行

  4. 配置文件中配置,导入aop约束

    • 目标对象
    • 通知对象
    • <aop:aspect-autoproxy> 开启注解aop
  5. 注解

    @Aspect 指定当前类是通知类

    @Before 前置通知方法

    @after-returning 后置通知方法

    @around 环绕通知方法

    @after-throwing 异常拦截通知方法

    @after 后通知方法

    @PointCut 抽取切点表达式

二:SpringAOP的更多相关文章

  1. 23-Java-Spring框架(一)

    一.Spring框架了解 Spring框架是一个开源的框架,为JavaEE应用提供多方面的解决方案,用于简化企业级应用的开发,相当于是一种容器,可以集成其他框架(结构图如下). 上图反映了框架引包的依 ...

  2. Spring框架学习之SpringAOP(二)

    AOP概念 AOP(Aspect-Oriented Programming,面向切面编程),AOP是OOP(面向对象编程)的补充和完善 AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用 ...

  3. Spring-AOP之工作实践(二)

    案例二.前端页面权限控制 对controllor控制器中的某写方法进行增强,如实现页面的按钮权限控制. /** * 保存session的容器 */ public class SessionContex ...

  4. spring-aop(二)学习笔记

    常用增强处理类型 增强处理类型                                                        特点 before 前置增强处理,在目标方法前织入增强处理 ...

  5. Spring-AOP源码分析随手记(二)

    这次来分析下切面的执行过程. 1.怎么看? 怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的: 然后就来到了这: 2.初步分析 里面有段: if (this.advised.exp ...

  6. 基于注解的SpringAOP源码解析(二)

    在上篇文章 中我们搭建了一个阅读源码的demo工程,然后简单介绍了一下@EnableAspectJAutoProxy注解,这个注解最重要的功能就是为向Spring中注入了一个beanAnnotatio ...

  7. Spring学习(二)

    1. AOP的思想(如何实现),AOP在哪些地方使用? 相关术语有哪些? AOP是面向切面编程,它是一种编程思想,采取横向抽取机制,取代了传统纵向继承体系重复性代码的方式 应用场景有: 记录日志 监控 ...

  8. WebService技术(二)— CXF

    前言:学习笔记,以供参考 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services .可以与Spring进行快速无 ...

  9. Spring-AOP实践 - 统计访问时间

    公司的项目有的页面超级慢,20s以上,不知道用户会不会疯掉,于是老大说这个页面要性能优化.于是,首先就要搞清楚究竟是哪一步耗时太多. 我采用spring aop来统计各个阶段的用时,其中计时器工具为S ...

随机推荐

  1. 求解任意图的最小支配集(Minimun Dominating Set)

    给定一个无向图G =(V,E),其中V表示图中顶点集合,E表示边的集合.G的最小控制顶点集合为V的一个子集S∈V:假设集合R表示V排除集合S后剩余顶点集合,即R∩S=∅,R∪S=V:则最小控制顶点集合 ...

  2. OCP 052最新考试题库和答案收集-34

    34.Which two can be backed up by using RMAN when a database Is open in ARCHIVELOG mode, so that medi ...

  3. [Maven实战-许晓斌]-[第二章]-2.4设置HTTP代理

  4. loj #6570. 毛毛虫计数

    $ \color{#0066ff}{ 题目描述 }$ hsezoi 巨佬 olinr 喜欢 van 毛毛虫,他定义毛毛虫是一棵树,满足树上存在一条树链,使得树上所有点到这条树链的距离最多为 1. 给定 ...

  5. JAVA输入随笔

    做题时经常遇到输入的问题,很麻烦 写一点点自己对于输入的随笔,以备后查 这里都以整数为例,其他类型的话换成相应方法就行了 1.知道一共多少行,每一行只有一个整数 这是比较简单的输入,可以用Scanne ...

  6. 1.jQuery入口函数

    <!--注意,如果需要对ie67兼容,我们可以使用原生低版本的jquery 比如说jquery-1.12.4.js--> <!DOCTYPE html> <html la ...

  7. 51nod1238. 最小公倍数之和 V3(数论)

    题目链接 https://www.51nod.com/Challenge/Problem.html#!#problemId=1238 题解 本来想做个杜教筛板子题结果用另一种方法过了...... 所谓 ...

  8. GTP

     GPRS隧道协议(GPRS Turning Protocol) GTP是一个高层协议,位于TCP/IP或UDP/IP等协议上,提供主机间端到端通信, 通过隧道标志(TEI)在路径协议上复用  GTP ...

  9. 线性代数与simplex

    线性方程组: \(i:1-n\) \(j:1-m\) \({\begin{cases}a_{11}x_1+a_{12}x_2+a_{13}x_3+\cdots+a_{1n}x_n=b_1\\a_{21 ...

  10. C运算符和表达式

    C语言入门(5)——运算符与表达式   版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究. https://blog.csdn.net/yinch ...