对AOP切面的一些整理与理解
首先上一张AOP的图示
连接点由两个信息确定:方法表示的程序运行点相对点表示的方位。
AOP通过切点定位到特定的链接点。
类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一一相应的关系,一个切点匹配多个连接点。切点通过接口进行描写叙述。使用类和方法作为连接点的查询条件。
>
<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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
假设日志代码发生改变,也必须改动全部模板。[核心代码须要写入众多的输出语句,代码冗余及维护困难等各种问题]
訪问到连接点上下文的信息。(简化日志)
表示连接点对象,该类是 JoinPoint 的子接口。
不论什么一个增强方法都能够通过将第一个入參声明为 JoinPoint 訪问到连接点上下文的信息。我们先来了解一下这两个接口的主要方法:
1) JoinPoint
java.lang.Object[] getArgs():获取连接点方法执行时的入參列表。
Signature getSignature() :获取连接点的方法签名对象。
java.lang.Object getTarget() :获取连接点所在的目标对象;
java.lang.Object getThis() :获代替理对象本身;
2) ProceedingJoinPoint
ProceedingJoinPoint继承JoinPoint子接口,它新增了两个用于运行连接点方法的方法:
java.lang.Object proceed() throws java.lang.Throwable:通过反射运行目标对象的连接点处的方法;
java.lang.Object proceed(java.lang.Object[] args) throws java.lang.Throwable:通过反射运行目标对象连接点处的方法,只是使用新的入參替换原来的入參。
对AOP切面的一些整理与理解的更多相关文章
- Spring AOP切面
在软件开发中,分布于应用多出的功能被称为和横切关注点. 通常,这些横切关注点从概念上是与应用的业务逻辑相分离的(可是往往直接嵌入到应用的业务逻辑中).将这些横切关注点与业务逻辑相分离正是面向切面编成( ...
- 如何优雅地在 Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志 | 修订版
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Spring基础篇——Spring的AOP切面编程
一 基本理解 AOP,面向切面编程,作为Spring的核心思想之一,度娘上有太多的教程啊.解释啊,但博主还是要自己按照自己的思路和理解再来阐释一下.原因很简单,别人的思想终究是别人的,自己的理解才是 ...
- SpringBoot 通过自定义注解实现AOP切面编程实例
一直心心念的想写一篇关于AOP切面实例的博文,拖更了许久之后,今天终于着手下笔将其完成. 基础概念 1.切面(Aspect) 首先要理解‘切’字,需要把对象想象成一个立方体,传统的面向对象变成思维,类 ...
- spring5 源码深度解析----- Spring事务 是怎么通过AOP实现的?(100%理解Spring事务)
此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理. 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置 ...
- 一文带你搞定AOP切面
摘要:AOP在spring中又叫"面向切面编程",是对传统我们面向对象编程的一个补充,主要操作对象就是"切面",可以简单的理解它是贯穿于方法之中,在方法执行前. ...
- Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现
前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...
- Spring AOP切面的时候参数的传递
Spring AOP切面的时候参数的传递 Xml: <?xml version="1.0" encoding="UTF-8"?> <beans ...
- Spring aop切面插入事物回滚
<!-- tx标签配置 事物--> <tx:advice id="txadvice" transaction-manager="transactionM ...
随机推荐
- jenkins,已令人发指的简发到如此地步了?
不用tomcat,一条命令.... java -jar jenkins.war
- [BZOJ2064]分裂 状压dp
2064: 分裂 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 656 Solved: 404[Submit][Status][Discuss] De ...
- 【转载】Linux kill, killall, kill -9
1) 查看进程的方法: ps -ef 或者 ps aux root 15087 0.0 0.0 0 0 ? S 23:31 0:00 [kwo ...
- 【转】virtualenv / venv 使用小结
在python3.3之前,需要利用virtualenv等工具来实现python虚拟开发环境的配置,在python3.3中加入了venv模块支持原生创建虚拟环境.但在python3.3版本中venv模 ...
- 安装和破解Quartus Ⅱ 15.0
http://jingyan.baidu.com/article/b7001fe18d47fc0e7282dd91.html
- hdu6059( Trie )
hdu6059 题意 给定数组 \(A\) ,问有多少对下标 \((i, j, k)\) 满足 \(i < j < k\) 且 \((A[i] \ xor \ A[j]) < (A[ ...
- cogs p服务点设置
5. P服务点设置 ★★ 输入文件:djsc.in 输出文件:djsc.out 简单对比时间限制:2 s 内存限制:128 MB 问题描述为了进一步普及九年义务教育,政府要在某乡镇建立 ...
- 机器人搬重物(BFS)
机器人搬重物 时间限制: 1 Sec 内存限制: 128 MB提交: 22 解决: 10[提交][状态][讨论版] 题目描述 机 器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一 ...
- 谜题22:URL的愚弄
本谜题利用了Java编程语言中一个很少被人了解的特性.请考虑下面的程序将会做些什么? public class BrowserTest { public static void main(String ...
- Encode and Decode Strings -- LeetCode
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...