Spring AOP学习笔记

需明确的几个概念:

l         通知(Advice):用于告知系统将有哪些新的行为。

l         切入点(Pointcut):定义了通知应该在应用到那些连接点。

l         目标对象(Target):被通知的对象。

l         代理(Proxy):将通知应用到目标对象后创建的对象。

 

Spring有两种代理创建方式:

1.     如果目标对象实现了一个或多个接口暴露的方法,Spring将使用JDKjava.lang.reflect.Proxy创建代理。这个类让Spring动态产生一个新的类,它实现了所需的接口,织入了通知,并且代理目标的所有请求。(这篇主要介绍这个方式)

2.    如果目标对象没有实现任何接口,Spring使用CGLIB库生成目标对象的子类。在创建这个子类的时候,Spring将通知织入,并且将对目标对象的调用委托给这个子类。

 

下面以一个实例说明Spring AOP的基本开发方法:

一.创建通知

Spring连接点模型是建立在方法拦截上,这意味着你编写的

Spring通知会在方法调用周围的各个地方织入系统中。

1

TestAopServiceAdvice实现了接口MethodBeforeAdvice(前置通知),并实现它的惟一的方法before,这个类就可以在调用目标对象前被调用。同样的还有AfterReturningAdvice(后置通知)MethodInterceptor(环绕通知),异常通知(ThrowsAdvice),引入通知等。

在这个方法中我们输出了一个字符串TestAopServiceAdvice,用于验证这个方法是否在目标对象前调用了。

注意:我们无法改变before方法中的参数argstarget中的值,args中存的是原来要传入目标对象的变量,target即指目标对象。

 

二.配置Spring XML配置文件

要在Spring中实现AOP,一般情况下需要配置4bean

1.    目标对象(target

2.    通知(advice)

3.    切入点(pointcut)

4.    代理(proxy)

2

切入点又分为静态切入点和动态切入点

l         静态切入点的意思是通知总是被执行,也是最常用的一种切入点。

l         动态切入点根据运行时方法的参数值决定通知是否被执行。

在图2中,定义了使用了一个Spring提供的静态切入点

NameMatchMethodPointAdvisor,它保证了当被调用的方法的名字与给出的映射名字相匹配的时候,这个切入点才匹配。

Spring提供的另一个静态切入点为RegexpMethodPointcutAdvisor,让你可以利用正则表达式来定义切入点,正则表达式需要jakarta-oro.jar包的支持。

 

使用ProxyBeanFactory可以创建一个被通知的类,即代理对象。它的最常用的三个控制行为的属性是:

l         proxyInterfaces:代理应该实现的接口列表。

l         interceptorNames:需要应用到目标对象上的通知Bean的名字。可以是拦截器、Advisor或其他通知类的名字。

注:在用容器的getBean方法时,应该是getBean(代理类的名字),而不是getBean(目标对象的名字),否则AOP无法工作。

转载于:https://www.cnblogs.com/springMVC/archive/2007/08/24/2204671.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc学习(44):springMVC运行原理

springMVC处理请求的流程 SpringMVC的工作原理图: SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)&…

一段按页自动滚动文字或图片的Js代码

<div iddemo style"position:relative;padding:10px;border:solid 1px green;BACKGROUND: #ffffff; OVERFLOW: hidden; WIDTH: 510px; COLOR: red; HEIGHT: 100px"><div id"demo1"style"position:relative;">您的图片或者要滚动的内…

spring mvc学习(45):springMVC的三大组件

SpringMvc框架结构图 处理器映射器&#xff1a;用户请求路径到Controller方法的映射处理器适配器&#xff1a;根据handler(controlelr类&#xff09;的开发方式&#xff08;注解开发/其他开发&#xff09; 方式的不同区寻找不同的处理器适配器 视图解析器&#xff1a;根据hand…

[NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP

1. Overview 本文将CNN用于句子分类任务 (1) 使用静态vector CNN即可取得很好的效果&#xff1b;> 这表明预训练的vector是universal的特征提取器&#xff0c;可以被用于多种分类任务中。 (2) 根据特定任务进行fine-tuning 的vector CNN 取得了更好的效果。 (3) 改进模型架…

知识图谱中三元组抽取

内容来自七月算法nlp课程。 这是要解决知识图谱中的其中一个问题&#xff1a;从非结构文本中抽取三元组。 要解决这个问题&#xff0c;总体思路有通过模板抽取、通过模型抽取。 三元组工业界一般都存储在neo4j中&#xff0c;学术界会采用RDF形式存储。 1结构化数据抽取 定义…

spring mvc学习(46):自定义配置类

上图是目录结构&#xff0c;本节是有问同学的&#xff0c;当好好总结 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

图谱问答-理解query

内容来自七月算法nlp课程。 图谱问题是用户输入一句话&#xff0c;系统返回这句话的答案。这里分多种情况。例如根据实体和关系查询尾实体&#xff0c;或者根据实体查询关系&#xff0c;甚至还会出现多跳的情况&#xff0c;不同的情况采用的方法略有不同。 文章目录1 根据实体…

图谱问答-句子向量模型部署项目总结(未完)

内容来自七月算法nlp课程。 文章目录1 句子向量1.1 bert句子向量表示相似度效果不好1.2 sentence-bert1 句子向量 句子向量是用于实体消岐的。可以使用Elmo&#xff0c;也可以使用bert。这里介绍用bert生成句子向量。 1.1 bert句子向量表示相似度效果不好 Bert中最常用的句向…

DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果

Asp.net提供了三个功能强大的列表控件&#xff1a;DataGrid、DataList和Repeater控件&#xff0c;但其中只有DataGrid控件提供分页功能。相对DataGrid&#xff0c;DataList和Repeater控件具有更高的样式自定义性&#xff0c;所以很多时候我们喜欢使用DataList或Repeater控件来显…

基于知识图谱的问答系统实践

文章目录1 项目目标1.1 数据情况1.2 问题分类2 技术方案2.1 数据准备2.2 数据入库2.3 查询部分3 模型3.1 问题分类3.1.1 数据准备3.1.2 分类模型TextCNN3.2 不同类型的问题处理逻辑4 总结与优化1 项目目标 1.1 数据情况 基于知识图谱的问答系统&#xff0c;简称为KBQA&#x…

二分搜索模板

翻了一下自己的博客。记录了花花酱的二分搜索模板、王争的二分搜索模板。 花花酱的文章中提到&#xff1a;不要试图去找一个正确答案。试图去找一个分割点m&#xff0c;使得x>m&#xff0c;g(x)>0为true。这个始终get不到。 王争的二分模板思路是比较简单的&#xff0c;就…

spring mvc学习(49):返回json数据

json包下载 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">…

理解transformer

文章目录1 注意力机制2 自注意力机制3 自注意力机制加强版4 Transformer的结构4.1 input4.2 encoder4.2.1 Multi-head attention4.2.2 残差链接4.2.3 层正则化layer norm4.2.4 前馈神经网络 feed forward network4.3 decoder4.3.1 输入4.3.1 Masked Multi-head attention4.3.2 …

第一百三十七期:一个简单的小案例带你理解MySQL中的事务

事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。 作者&#xff1a;Java的架构师技术栈 事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。这篇文章还是属于我的mysql基础文章&…

解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet

软件&#xff1a; 1、流媒体服务器EasyDarwin-windows-8.1.0-1901141151 2、ffmpeg-20181001-dcbd89e-win64-static 3、直播源&#xff1a;rtsp://192.168.1.168/0 4、流媒体服务器EasyDarwin地址rtsp://192.168.1.28/3 问题现象 [rtsp 0000000000122bc0] max delay reached. …

第一百三十八期:37 个MySQL数据库小知识,为面试做准备

无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术是一个必备加薪神器&#xff0c;那么&#xff0c;一直说学习数据库、学MySQL&#xff0c;到底是要学习它的哪些东西呢? 作者&#xff1a;芒果教你学编程 无论是运维、开发、测试&#xff0c;还是架构师&…

第一百三十九期:11月数据库排行:排名前三数据库分数暴跌

DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;与上期数据相比&#xff0c;这期排行榜最大的亮点就是排名前三数据库那引人注目的“红色”分数。 作者&#xff1a;局长 DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;排名前二十如下&#xff1a; ▲…

对话系统之NLU总结报告

文章目录1 项目介绍1.1 背景知识介绍1.2 数据集介绍1.3 评价指标2 技术方案梳理2.1 模型目标2.2 模型介绍2.3 模型实现2.3.1 数据处理2.3.2 构建dataset2.3.3 模型定义2.3.4 训练相关参数2.3.5 训练结果3 项目总结1 项目介绍 1.1 背景知识介绍 对话系统按领域分类&#xff0c…

闲聊型对话系统之NLG总结报告

文章目录1 项目介绍1.1 背景知识介绍1.2 NLG的实现方式1.2.1 基于模板1.2.2 检索式1.2.3 生成式1.3 数据集介绍2 技术方案梳理2.1 模型介绍2.2 评价指标2.3 模型实现2.3.1 数据处理2.3.2 构建dataset2.3.3 模型定义2.3.4 训练相关参数2.3.5 训练结果1 项目介绍 1.1 背景知识介…

spring mvc学习(50):java.lang.ClassNotFoundException: org.springframework.web.servlet. DispatcherSe

今天朋友发了个maven项目给我看&#xff0c;问我为什么启动不了。说实话&#xff0c;一直用Jfinal都快不会用spring了… 还是决定看看。 接收了文件&#xff0c;是maven构建的&#xff0c;打开eclipse&#xff0c;导入maven项目&#xff0c;然后部署到tomcat&#xff0c;启动t…