目录

AOP

AOP简介

  • 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,
  • 通过预编译方式和运行期动态代理,实现程序功能的统一维护的一种技术。
  • AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
  • 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

开发存在 的问题

JDK动态代理

cglib动态代理

  • Cglib是一个第三方开源代码

  • 生成类库,动态添加类的属性和方法。

  • 在spring的核心包当中已经引入了cglib

  • 采用的是继承方式来产生的代理对象

Spring的AOP简介

  • AOP思想最早是由AOP联盟组织提出的
  • Spring使用这种思想最好的框架
  • AspectJ
Spring的AOP有自己的实现方式,但是这种方式非常繁琐
AspectJ是一个AOP的框架
Spring放弃了自己传统的方式 ,引入AspectJ作为自身AOP的开发

AOP相关术语

Joinpoint:连接点

  • 可以被拦截到的方法

  • 能够被增强的方法,这些方法就可以称为是连接点

Pointcut:切入点

  • 真正被拦截的方法
  • 真正被增加的方法

Advice:通知

​ 增加的内容,通常都是封装成一个方法, 这个方法我们就称为通知

Introduction:引介

  • 类层面的增加
  • 给原有的类添加一些新的属性方法
  • 在开发中通常都是给方法进行增加

Target:被增加的对象

Weaving:织入

​ 将通知应用到目标对象的过程

Proxy:代理对象

Aspect:切面

​ 多个通知和多个切入点的集合

Spring中AOP使用

1.引入spring基本jar包

2.引入aop开发的相关jar包

3.配置文件中引入aop约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
</beans>

4.Spring测试

  • 测试时,每次都需要获取工厂
  • 通过spring-test,就不用每次获取
  • 添加测试依赖包

5.测试

6.编写一个切面类

7.将切面交给spring

8.配置AOP完成对目标产生代理

AOP通知类型

前置通知

​ 在目标方法执行之前进行操作

后置通知

​ 在目标方法执行之后 进行操作

环绕通知

​ 在目标方法执行之前 和之后进行操作

	public Object arount()

异常抛出通知

​ 在程序出现异常时进行操作

最终通知

​ 无论代码是否有异常,都会执行

AOP切入点表达式

基于execution函数完成

语法

【访问修饰符】 方法返回值 包名.类名.方法名(参数)
public com.myxq.demo2.GoodsDaoImpl.save(..)
参数为任意参数
* com.myxq.demo2.GoodsDaoImpl.save(..)
任意类型
* com.myxq.demo2.GoodsDaoImpl+.save(..)
加上当前类和子类
* com.myxq..*.*(..)
com.myxq包以及子包下面所有类的所有方法

AOP注解方式ApsectJ开发

引入Jar包

引入配置文件

编写切面类配置

使用注解的AOP对象目标类进行增强

在配置文件中开启以注解形式进行AOP开发

在切面类上添加注解

注解AOP通知类型

@Before前置通知

@AfterReturning后置通知

没有返回值

有返回值

@Around环绕通知

@AfterThrowing异常抛出通知

没有获取异常信息

获取异常信息

@After最终通知

AOP的注解切入点的配置

  • 有时候一个方法要添加前置通知对又要添加异常通知,又要添加最终通知
  • 可以在切面当中定义好切入点
  • 在通知当中直接使用定义好的切入点表达式

定义多个切入点

​ 一个通知同时定义到多个方法当中

当使用接口时与不使用接口内部代理区别

使用接口

不使用接口

三大框架 之 Spring-Aop的更多相关文章

  1. Eclipse/JavaWeb (三)三大框架之Spring框架 持续更新中...

    (一)发展历史 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的struts需要调用一个业务类,就需要new一个业务类出来,然后使用:业务层需要调用持久层的类,也需要new一个持久层类出 ...

  2. java框架篇---spring AOP 实现原理

    什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...

  3. java框架篇---spring aop两种配置方式

    第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Befor ...

  4. 三大框架 之 Spring(IOC控制反转、DI依赖注入)

    目录 常用词汇 left join与left outer join的区别 Struts2的标签库导入 Spring Spring概述 什么是Spring spring特点 下载 IOC 什么IOC 传 ...

  5. 利用MyEclipse配置S2SH三大框架篇-Spring配置

    1.配置完Struts2后,然后配置Spring 2.单击“MyEclipse->Project Capabilities->Add Spring Capabilities” 3.选择Sp ...

  6. Spring AOP 框架

    引言 要掌握 Spring AOP 框架,需要弄明白 AOP 的概念. AOP 概念 AOP(Aspect Oriented Programming的缩写,翻译为面向方面或面向切面编程),通过预编译方 ...

  7. SpringMVC详解(四)------SSM三大框架整合之登录功能实现

    为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...

  8. java的老说三大框架

    一直不明白java的老说三大框架,怎么就一个SSH,今天终于有了一点点的了解. 三大框架就是Spring框架,Struts框架,Hibernate框架. Spring提供了管理业务对象的一致方法并且鼓 ...

  9. [转]彻底征服 Spring AOP 之 理论篇

    基本知识 其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, ...

  10. Java Spring AOP用法

    Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...

随机推荐

  1. [服务器]SSL安装证书教程

    来自阿里云教程 Tomcat服务器安装SSL证书 安装PFX格式证书 https://help.aliyun.com/document_detail/98576.html?spm=a2c4g.1118 ...

  2. xadmin 配置内置User模型

    xadmin 配置内置USER模型 默认展示 在你的User模型对应的app下创建adminx 文件 import xadmin from django.contrib.auth import get ...

  3. 1、uiautomator2常用语法

    uiautomator2常用语法 连接设备 使用USB连接: d=u2.connect_USB('148b4090')输入手机序列号 d是给当前连接设备定位一个变量 获取设备的信息: print(d. ...

  4. 传统Dolev-Yao攻击模型和eCK强安全模型之间的辨析

    1.DY模型是基于安全协议的分层次的思想,先考虑安全协议本身的行为逻辑是否存在缺陷,之后再考虑实现方法是否存在问题. 而在一般的协议分析中我 们在安全协议验证中我们假定攻击者不具备攻破密码算法的能力, ...

  5. Linux 绑定 ttyUSBn 串口方法。

    Linux 绑定 ttyUSBn 串口方法. 在linux下, 使用usb转串口, 经常会碰到一个问题: 如果有多个串口, 以不同顺序插入的时候, /dev/ttyUSB0 /dev/ttyUSB1的 ...

  6. [ipsec][strongswan] strongswan源码分析-- (三) xfrm与strongswan内核接口分析

    目录 strongwan sa分析(三) xfrm与strongswan内核接口分析 1. strongswan的实现 2. 交互机制 4. xfrm的消息通信的实现 strongwan sa分析(三 ...

  7. javascript详解1

    推荐学习链接: https://book.apeland.cn/details/356/ http://es6.ruanyifeng.com/#README https://developer.moz ...

  8. C++ ---定义变量初始化

    定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”. 每种类型的变量都有各自的初始化方法,mems ...

  9. linux系统编程之进程(一)

    今天起,开始学习linux系统编程中的另一个新的知识点----进程,在学习进程之前,有很多关于进程的概念需要了解,但是,概念是很枯燥的,也是让人很容易迷糊的,所以,先抛开这些抽象的概念,以实际编码来熟 ...

  10. 【Low版】HAUT - OJ - Contest1035 - 2017届新生周赛(六)题解

    问题 A: 比赛 时间限制: 2 秒 内存限制: 256 MB | 提交: 393 解决: 98提交 状态 题目描述 学校要派6名同学组成两个队(一个队3个人)去参加比赛,每个同学有一个分数,学校希望 ...