三大框架 之 Spring-Aop
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的更多相关文章
- Eclipse/JavaWeb (三)三大框架之Spring框架 持续更新中...
(一)发展历史 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的struts需要调用一个业务类,就需要new一个业务类出来,然后使用:业务层需要调用持久层的类,也需要new一个持久层类出 ...
- java框架篇---spring AOP 实现原理
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- java框架篇---spring aop两种配置方式
第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Befor ...
- 三大框架 之 Spring(IOC控制反转、DI依赖注入)
目录 常用词汇 left join与left outer join的区别 Struts2的标签库导入 Spring Spring概述 什么是Spring spring特点 下载 IOC 什么IOC 传 ...
- 利用MyEclipse配置S2SH三大框架篇-Spring配置
1.配置完Struts2后,然后配置Spring 2.单击“MyEclipse->Project Capabilities->Add Spring Capabilities” 3.选择Sp ...
- Spring AOP 框架
引言 要掌握 Spring AOP 框架,需要弄明白 AOP 的概念. AOP 概念 AOP(Aspect Oriented Programming的缩写,翻译为面向方面或面向切面编程),通过预编译方 ...
- SpringMVC详解(四)------SSM三大框架整合之登录功能实现
为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...
- java的老说三大框架
一直不明白java的老说三大框架,怎么就一个SSH,今天终于有了一点点的了解. 三大框架就是Spring框架,Struts框架,Hibernate框架. Spring提供了管理业务对象的一致方法并且鼓 ...
- [转]彻底征服 Spring AOP 之 理论篇
基本知识 其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, ...
- Java Spring AOP用法
Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...
随机推荐
- java web编程 servlet3
- Python学习日记(六) 浅深copy
浅深copy即完全复制一份和部分复制一份 浅深copy在列表数据量较大时不建议使用,比较消耗内存资源 1.赋值运算 l1 = [1,'s',[1,2,3]] l2 = l1 print(id(l1), ...
- SQL SERVER-Extendevent检测TempDB增长
--创建Session收集数tempDB增长数据 CREATE EVENT SESSION [Database_Growth_Watchdog] ON SERVER ADD EVENT sqlserv ...
- [ike][ipsec] child sa rekey机制的细节分析
子标题:ipsec rekey是否会导致丢包 author: classic_tong 前言 什么叫rekey. rekey是指ipsec的通信两端定期更换加密信道秘钥的机制. 为了安全性考虑,随着秘 ...
- Linux磁盘管理——directory tree与mount point
参考:/sys 和 /dev 区别 Linux磁盘管理——虚拟文件系统 Directory tree Linux内的所有数据都是以文件的形态来呈现的,所以整个Linux系统最重要的地方就是direct ...
- 【HCIA Gauss】学习汇总-数据库管理-2
数据库管理目标:稳定 安全 数据一致性 系统高性能 数据库管理员 数据库管理范围 :数据库管理对象1.物理设计工作 2.物理实现工作 对象是指 :数据库里 存储和指向数据的各种概念和结构的总称 对象管 ...
- zabbix的psk加密结合zabbix_get取值
转载:https://www.xj123.info/7386.html 参考文档:https://www.zabbix.com/documentation/3.0/manpages/zabbix_ge ...
- ThreadStatic特性
文章:ThreadStatic特性 地址:https://www.cnblogs.com/xuejietong/p/10997385.html 带有threadStaticAttribute标记的静态 ...
- jmeter性能测试监控
Jmeter监控服务器资源配置如下: 1.进入https://jmeter-plugins.org/downloads/all/下载plugins-manager.jar,放置到jmeter安装目录/ ...
- 如何解决WinForm中TableLayout控件闪烁的问题
public FormReg() { InitializeComponent(); typeof(TableLayoutPanel) .GetProperty("DoubleBuffered ...