Spring入门篇——AOP基本概念
1、什么是AOP及实现方式
什么是AOP
- AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
- 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等
AOP实现方式
- 预编译
-ApectJ
- 运行期动态代理(JDK动态代理、CGLib动态代理)
-SpringAOP、JbossAOP
2、AOP基本概念
连接点:比如一个类中某个方法执行的开始
通知:在某个方法执行的时候,额外执行的切面的动作
切入点:如何在切面中去匹配一个具体的连接点
引入:源代码中并没有这样的方法和属性,通过修改字节码文件为类增加新的方法和属性
目标对象:比如说我们有订单service和商品service,切面会通知所有的service在去执行数据库操作的时候,去加上事务的控制,这两个sevice就是目标对象,也就是被切面所通知的对象

Advice的类型
前置通知:比如说这个连接点是一个方法,那么前置通知就是在方法之前执行的,在进入到方法之前执行的
返回后通知:在某个方法执行完成并返回值后再去执行的通知
抛出异常后通知:当某个方法抛出异常之后才会被执行到的通知

3、Spring中的AOP
Spring框架中AOP的用途
- 提供了声明式的企业服务,特别是EJB的替代服务的声明(EJB是企业级javabean)
- 允许用户定制自己的方面,以完成OOP(面向对象编程,实现一个功能的顺序)与AOP(横切的方式,在各个功能之间横切的功能)的互补使用
Spring的AOP实现

有接口和无接口的Spring Aop实现区别

4、Schema-based AOP
配置切面aspect


配置切入点Pointcut
Spring AOP、AspectJ都支持

只有Spring AOP支持



例子1:

例子2:

配置一个完整的<aop:config>

前置通知
声明Before advice的两种方式

在返回之后的通知

pointcut-ref :引用某一个切入点
method:在After returning advice这个通知上要执行的方法是什么样
returning="retVal":限制返回值
抛出异常之后返回

返回的通知:在返回之后或者可以理解是方法结束前的最后一条代码取执行after advice,无论方法是否正常结束,after advice都会被执行

环绕通知

通知里面使用参数的方式


Introductions

配置


Advisors的配置

5、Spring AOP API












ProxyFactoryBean及相关内容

ProxyFactoryBean通过以下方式来达到代理的目的






6、AspectJ


AspectJ注解的具体使用



任何包的类下面只要有transfer方法,都会匹配这个切入点anyOldTransfer
切入点支持哪些种定义方式或者哪些个点可以定义

定义两个连接点(切入点)
切入点1:执行com.imooc.aop.aspect.biz包下面所有以Biz结尾的类的任何类型的方法的时候,都会匹配当前的切入点
切入点2:当前这个包下的任何类都会匹配到这个切入点


执行所有public类型方法的时候会匹配这个切入点
如何定义良好的切入点?

在aspectj中advice的定义

例子

使用advice的两种方式
1.直接定义一个execution的表达式
2.使用一个已经存在的pointcut,也就是引用一个已经定义好的切入点




Advice扩展应用




Introductions实现方式


Spring入门篇——AOP基本概念的更多相关文章
- Spring入门篇总结:
本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看 视频传送门:Spring入门篇 该门课程主要从Spring的Bean ...
- 学习 Spring (十二) AOP 基本概念及特点
Spring入门篇 学习笔记 AOP: Aspect Oriented Programming, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 主要功能是:日志记录.性能统计.安全控 ...
- Spring入门4.AOP配置深入
Spring入门4.AOP配置深入 代码下载 链接: http://pan.baidu.com/s/11mYEO 密码: x7wa 前言: 之前学习AOP中的一些概念,包括连接点.切入点(pointc ...
- Spring入门3.AOP编程
Spring入门3.AOP编程 代码下载: 链接: http://pan.baidu.com/s/11mYEO 密码: x7wa 前言: 前面学习的知识是Spring在Java项目中的IoC或DJ,这 ...
- SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇
目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...
- spring 入门篇
spring 入门篇 相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低.开发商之间不统一.没有真正实现“写一次到处 ...
- Spring课程 Spring入门篇 5-1 aop基本概念及特点
概念: 1 什么是aop及实现方式 2 aop的基本概念 3 spring中的aop 1 什么是aop及实现方式 1.1 aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行.孙悟空 ...
- Spring入门篇——第5章 Spring AOP基本概念
第5章 Spring AOP基本概念 本章介绍Spring中AOP的基本概念和应用. 5-1 AOP基本概念及特点 5-2 配置切面aspect ref:引用另外一个Bean 5-3 配置切入点Poi ...
- Spring入门及IoC的概念
Spring入门 Spring是一个轻量级的Java开发框架,最早由Robd Johnson创建,目的为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,它是一个分层的JavaSE/EE轻量级开源 ...
随机推荐
- nginx location 优先级
location 顺序/优先级: location = > location 完整路径 > location ^~ 路径 > location ~,~* 正则顺序 > ...
- Java线程安全队列Queue实现原理
原文链接:https://www.cnblogs.com/DreamRecorder/p/9223016.html 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.J ...
- 一篇搞定Java过滤器
Filter:过滤器 引言 我们可以通过使用前面的技术,做出一些简单的登陆注册以及配合数据库实现对数据增删改查的Demo,程序是基本运行起来了,但是却存在着一个重大的安全问题,那就登陆权限验证,一般来 ...
- 原生JS+ CSS3创建loading加载动画;
效果图: js创建loading show = function(){ //loading dom元素 var Div = document.createElement("div" ...
- vue-cli开发-搭建项目(一)
前言 vue-cli是Vue官方提供的命令行工具,可用于快速搭建大型单页应用.集成了webpack环境及主要依赖,对于项目的搭建.打包.维护管理等都非常方便快捷.建议先熟悉 Vue 本身之后再研究 C ...
- sql server 日期函数
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- python 脚本定时删除 elk索引
脚本如下 一.python 脚本如下 #! /usr/bin/python # -*- coding=utf-8 -*- import urllib import urllib.request imp ...
- 使用redis和thread告警并避免重复告警
spring cloud使用redis 增加监控,微服务的监控体系特别重要,这里增加了告警(使用thread异步告警),同时不能短时间内不能重复告警(使用redis避免重复) 1.增加依赖 ...
- golang之map的使用声明
1.map的基本介绍 map是key-value数据结构,又称为字段或者关联数组.类似其它编程语言的集合,在编程中是经常使用到的 2.map的声明 1)基本语法 var map 变量名 map[key ...
- .net core +gogs + jenkins +docker自动化发布、部署
1.首先,安装docker,不多bb 2.我们采用docker的方式安装jenkins,同时将宿主机的docker挂载到docker安装的jenkins里面,可能有点拗口.说白了就是 就是要让jenk ...