spring框架中AOP思想与各种配置详解
Spring中提供两种AOP支持:
1.基于代理的经典AOP
2.Aspectj注解配置AOP
首先我们先了解什么是AOP,AOP(Aspect Oriented Programming)面向切面编程!AOP采用了横向抽取机制(可能有人会说啥叫横向抽取机制,在这里先引入一个纵向继承的概念),取代了纵向继承的重复性代码(例如权限控制、性能监视、缓存)
spring AOP使用纯Java实现,主要通过代理方式向目标类(被代理的类织入增强代码)
Aspectj 是一个基于Java语言的AOP框架
纵向继承:
在图中,左边的传统的纵向继承方式,因为writelog在具体实现类userdao中无法被复用,所以此方法就被放到了所有的dao的父类BaseDao中
多态的特性,所有子类dao要加强代码时,经过父类的writelog方法,类似一种从上到下的关系;然而右边的是AOP思想下的代码增强,因为不
论是代理类UserDaoProxy,还是被代理类UserDao,都实现了同一个接口或是同一个父类,属于兄弟关系,实现了所谓的“横向”的切入机制!
而对于AOP中的一些术语,我觉得你们需要了解一下,以便于对下面的阅读有帮助!
针对这个图再补充一下,一个切点和一个advice的组合叫advisor!!
(1) 基于代理的经典AOP
通知:advice
Spring提供了 前置通知、环绕通知、后置通知、异常通知等等。
这些advice分别对应要实现的接口:MethodBeforeAdvice、MethodInteceptor、AfterReturningAdvice、ThrowsAdvice
就拿前置通知来举例子:

这是在xml中的各个类的配置

但其实你们会发现,我这里的advice没有指定要对哪个方法执行增强,因为dao可能会有好几种方法,但是有些并不需要增强,所以一,我们就需要一个带有特定切点的advice!
基于以上的配置进行修改,带有切点的切面!!

一个切点和一个advice的组合:advisor
带有切点的切面,只需要在以上配置中再加一个:
之后在配置代理类时,把interceptorname换位这个带有切点的切面id
但是有没有发现前面的配置中,每一步生成代理类时,都需要主动去配置proxyFactoryBean来生成代理类,这样做很麻烦,所以这里又要引入自动代理的概念!!



(2) Aspectj配置AOP(推荐使用)

2.1基于Aspectj注解形式
第一步:引入相应的jar包

第二步:以Aspectj形式编写

第三步:创建xml文档:

2.2基于Aspectj的xml形式配置
这是以xml形式编写的aspect配置
spring框架中AOP思想与各种配置详解的更多相关文章
- Spring 框架中注释驱动的事件监听器详解
事件交互已经成为很多应用程序不可或缺的一部分,Spring框架提供了一个完整的基础设施来处理瞬时事件.下面我们来看看Spring 4.2框架中基于注释驱动的事件监听器. 1.早期的方式 在早期,组件要 ...
- spring基于通用Dao的多数据源配置详解【ds1】
spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...
- Spring框架中的定时器 使用和配置
Spring框架中的定时器 如何使用和配置 转载自:<Spring框架中的定时器 如何使用和配置>https://www.cnblogs.com/longqingyang/p/554543 ...
- SpringMVC 框架系列之组件概述与配置详解
在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...
- Spring 4.2框架中注释驱动的事件监听器详解
事件交互已经成为很多应用程序不可或缺的一部分,spring框架提供了一个完整的基础设施来处理瞬时事件.下面我们来看看Spring 4.2框架中基于注释驱动的事件监听器. 1.早期的方式 在早期,组件要 ...
- 从Spring到SpringBoot构建WEB MVC核心配置详解
目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开 ...
- SpringBoot + Spring Security 基本使用及个性化登录配置详解
Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档 我就只说下SpringSecurity核心功能: 认证(你是谁) 授权(你能 ...
- Spring之旅第四篇-注解配置详解
一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会有错的. 上一篇Spring的配置博客 ...
- Spring MVC配置文件的三个常用配置详解
转自:http://www.cnblogs.com/benwu/articles/5162614.html Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和appl ...
随机推荐
- redis 学习(5)-- 列表类型
redis 学习(5)-- 列表类型 列表特点 有序.可以重复.左右两边插入弹出 索引相关知识 索引从左往右,从0开始逐个增大 0 1 2 3 4 5 索引从右往左,从-1开始逐个减小 -6 -5 - ...
- WPF中Matrix介绍
最近在做一些图形变换操作的功能,图形变换涉及大学中的矩阵运算部分的知识,又重新复习了一下矩阵.这里做一下记录.由于不知道矩阵如何输入,一个个截图又麻烦,所以这里就全部用截图了^-^.
- Http的简单介绍
之前写过一篇使用HttpListener作为简单的HTTP服务器,后面实际项目中就用到了,测试发现,在Win7下如果不是以管理员权限运行程序,使用HttpListener是会出错了. 所以就很好奇HT ...
- MySQL数据库基础-JAVA
数据库 MySQL初步 MySQL基础认知 (Oracle真的是走哪祸害到哪23333) Java多用MySQL和Oracle SQLServer也收费,但是还行,比Oracle便宜,一个差不多3w多 ...
- 精确率与回召率与 F1-Meature
例子: true positive(真正例): 把 Colin power预测为Colin power(55) false positive(假正例): 把 其他人预测为Colin power(4+1 ...
- 亲爱的SAP从业者们,烦请做个SAP知识学习种类的小调查
"世上再也没有比时钟更加冷漠的东西了:在您出生的那一刻,在您尽情地摘取青春幻梦的花朵的时刻,它都是同样分秒不差地滴答着." -- 高尔基 2019年马上又要离我们而去了,从2018 ...
- python web开发中跨域问题的解决思路
线上环境不存在跨域问题,nginx转发 解决思路: 1.什么是跨域 在浏览器窗口中,和某个服务端通过某个 “协议+域名+端口号” 建立了会话的前提下,去使用与这三个属性任意一个不同的源提交了请求,那么 ...
- 开始PHP,常量/变量与内存间的关系--传值
一.常见的PHP代码嵌入式方式,与html结合 要注意:文件名后缀必须形如xxx.php否则html将无法解析 二.php脱离html代码独立工作,没有其他代码 不需要借助Apache工作,只需要ph ...
- 阻止默认/冒泡事件(兼容ie)
(1) 阻止默认事件 function(e){ if(e && e.preventDefault){ e.preventDefault(); }else{ //IE window.ev ...
- 当心JavaScript奇葩的逗号表达式
看看下面的代码输出什么? let a = 2; switch (a) { case (3, 2, 5): console.log(1); break case (2, 3, 4): console.l ...