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 ...
随机推荐
- Postgresql 大小版本升级
文章结构如下: Postgresql是一个非常活跃的社区开源项目,更新速度很快,每一次版本的更新都会积极的修复旧版本的BUG,性能上也会有不同幅度的提升.10之前的版本由三部分组成,10开始只有两部分 ...
- 今天发布MVC项目一直找不到页面
刚开始以为是framwork版本太高,服务器没安装. 后面想到应用池版本忘记选了
- whistle 前端工具之抓包利器
一.业务场景 前端本地开发的场景中,我们需要频繁的改动代码,并需要实时看到效果,并且在一些开发场景中,我们需要将特定的请求代理到特定的IP.本地文件等,所以使用fiddler或whistle等本地.真 ...
- 深入简出mysql--第一部分
第二章: 1.sql分类 DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象的定义. 常用的语句关键字主要包括 ...
- 微信小程序获得高度
wx.getSystemInfo({ success: (res) => { wx.createSelectorQuery().select('#scrollbox').boundingClie ...
- 锋利的jQuery读书随笔
代码规范:var $variable = jQuery对象:var variable = DOM对象: jQuery对象无法使用DOM对象的任何方法,同样DOM对象也无法使用jQuery对象的任何方法 ...
- 4.pca与梯度上升法
(一)什么是pca pca,也就是主成分分析法(principal component analysis),主要是用来对数据集进行降维处理.举个最简单的例子,我要根据姓名.年龄.头发的长度.身高.体重 ...
- 4.flask第三方组件
1.flask-session的使用 在flask中,有一个app.session_interface = SecureCookieSessionInterface(),也就是存session,调用o ...
- golang 结构体嵌入和匿名成员
考虑一个二维的绘图程序,提供了一个各种图形的库,例如矩形.椭圆形.星形和轮形等几 何形状.这里是其中两个的定义 type Circle struct { X, Y, Radius int } type ...
- linux 查看cpu核心数
1.查看CPU个数 cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2.查看每个物理CPU含有的核心个数 cat /pr ...