文档章节

Spring再回首二:AOP

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

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 源码解读 推荐流程

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 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及AOP实例

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

wangxuwei
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上)...

九州暮云
33分钟前
1
0
面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
今天
4
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
今天
4
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
4
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部