文档章节

Spring再回首二:AOP

silence88
 silence88
发布于 2017/02/16 18:47
字数 615
阅读 5
收藏 1
点赞 0
评论 0

AOP概念

  1. AOP:面向切面(方面)编程,扩展功能不修改源代码实现
  2. AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码,达到了高内聚低耦合的特性。
  3. AOP底层使用动态代理实现
    • 第一种情况,有接口情况,使用动态代理创建接口实现类代理对象
    • 第二种情况,没有接口情况,使用动态代理创建类的子类代理对象

AOP的理解

1、纵向抽取机制增强一个方法:

2、横向抽取机制增强一个方法:

---

AOP操作术语

  1. 连接点(Joinpoint):所谓链接点就是指哪些被拦截的点。在spring中,这些点指的是方法。(通俗理解:类里面可以增强的方法,这些方法并成为连接点)
  2. 切入点(pointcut):实际增强的方法,则为切入点。
  3. 通知/增强(Advice):增强的逻辑,成为增强,例如需要增加记录日志的操作,则记录日志的逻辑则称为增强。增强类型分为:前置通知、后置通知、异常通知、最终通知、环绕通知(在方法之前和之后执行)
  4. 切面(Aspect):把增强应用到具体方法上面,这个过程则成为切面。(把增强应用到切入点的过程)

Spring的AOP操作

1、在spring里面进行aop操作,使用的是aspectj实现(acpectj可以理解为是另一种框架)

2、使用aspectj实现aop有两种方式:xml、注解(不常用)。

  • 操作准备

  1. 除了导入基本的jar包之外,还需要导入aop相关的jar包

    2. 创建spring核心配置文件,导入aop的约束

    3. 使用表达式配置切入点

 execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)

(1)execution(* cn.itcast.aop.Book.add(..))

(2)execution(* cn.itcast.aop.Book.*(..))

(3)execution(* *.*(..))

(4) 匹配所有save开头的方法 execution(* save*(..))

   4、配置

解释:Book类的方法需要增强,因此这里配置切入点pointcut1,就是代表Book类的方法,myBook配置的是切面,即里面要体现使用哪个类的方法的哪个方法增强哪个切入点,这里既是用MyBook的before1方法增强pointcut1这个切面。

 基于aspectj的注解aop操作

1、在spring核心配置文件中,开启aop操作

2、在增强类上面使用注解完成aop操作。

© 著作权归作者所有

共有 人打赏支持
silence88
粉丝 7
博文 71
码字总数 72855
作品 0
深圳
程序员
Spring AOP解释及在项目中使用举例

一.AOP是什么 AOP - Aspect Oriented Programing,面向切面编程。将封装好的对象切开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”,切...

Jacktanger
06/08
0
0
Spring aop 前置通知、后置通知、返回通知、 异常通知 、后置通知

Spring AOP定义切面 Ⅰ 首先介绍一下写Spring Aop思路 一、首先在项目中加入aop所需要的jar aopalliance-1.0.jar aspectjweaver-1.6.11.jar commons-logging-1.1.1.jar spring-aop-3.0.5.REL......

薄暮凉年
2015/07/26
0
0
Spring 源码解读 推荐流程

Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.javaeye.com/topic/86594 Spring源代码解析(三):Sprin...

2k10
2015/04/02
0
0
Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持

AOP的基本概念 AOP从运行的角度考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中的各个步骤,希望以更好的方式来组合业务逻辑的各个步骤。AOP框架并不与特定的代码耦合,AOP...

摆渡者
2014/03/17
0
3
最最简单的spring及AOP实例

一、简单的spring实现(annotation方式) bean类 测试类: 运行结果: (xml方式) bean类 xml配置文件applicationContext.xml(放在包com.hello下) 测试类: 二、注解方式实现aop(需要导入...

wangxuwei
2017/10/24
0
0
1000行代码读懂Spring(二)- 在Spring中实现AOP

关于AOP AOP是Spring核心功能之一。今天就用tiny-spring来实现一个AOP。具体功能会包括: 读取AspectJ格式的Pointcut描述。 使用JDK动态代理以及CGLib两种方式进行AOP织入。 AOP分为配置(Po...

黄亿华
2014/01/20
0
3
Spring AOP 的实现方式(以日志管理为例)

Spring AOP 的实现方式(以日志管理为例) 2016年10月08日 00:13:57 阅读数:23198 在学习Spring框架的历程中,最重要的是要理解Spring的IOC和AOP了,不但要学会怎么用,最好是知道它是怎么实...

Jeam_
07/04
0
0
spring 入门及IOC容器

Spring 一.Spring,原意“春天”,是一种轻量级容器框架,所谓轻量级就是依赖比较少,侵入性较低,其核心就是1. IOC(Inversion of Control)/DI(Dependency Injection)IoC的核心思想是通过消...

天国使者125
2013/06/15
0
0
Spring Boot实战与原理分析

Spring Boot实战与原理分析 1:Spring Boot概述与课程概要介绍 2:Spring4 快速入门 3:Spring4 扩展分析(一) 4:Spring4 扩展分析(二) 5:Spring Boot 快速入门 6:Spring Boot 配置分析...

刘宗泽
06/26
0
0
Spring AOP @AspectJ 入门实例

从Spring 2.0开始,可以使用基于schema及@AspectJ的方式来实现AOP,本文以一个简单的实例介绍了如何以@AspectJ方式在Spring中实现AOP。由于@Aspect是基于注解的,因此要求支持注解的5.0版本以...

Zero零_度
2015/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 你被我从 osc 老婆们名单中踢出了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小鱼丁:分享五月天的单曲《后来的我们 (电影《后来的我们》片名曲)》: 《后来的我们 (电影《后来的我们》片名曲)》- 五月天 手机党少年们想...

小小编辑
8分钟前
3
1
Spring Boot Admin 2.0开箱体验

概述 在我之前的 《Spring Boot应用监控实战》 一文中,讲述了如何利用 Spring Boot Admin 1.5.X 版本来可视化地监控 Spring Boot 应用。说时迟,那时快,现在 Spring Boot Admin 都更新到 ...

CodeSheep
27分钟前
0
0
Python + Selenium + Chrome 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密、独享、开放代理,专...

sunboy2050
今天
0
0
实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部