5. AOP

news2024/9/29 3:32:59

一、如何定义一个MethodHandler?

1.@Controller注解修饰的类

    1.注册成Spring Bean

     2.表示它是一个SpringMVC下的Controller

2.在这个类下的方法中,只要被@RequestMapping修饰&&方法的形参符合规定(需要看文档) + 方法的返回值符合规定 (需要看文档)

1.不用在意方法的名字

2.不用在意方法的返回值签名


@RequestMapping(value = path)  ==  @RequestMapping(path)

变形如下:

@RequestMapping(value = path, method = GET/POST)

@GetMapping / @PostMapping

@RequestMapping修饰类,直接给这个类的所有方法前面添加统一的URL path前缀


支持的方法形参:

1.原生的Servlet模式

void...(HttpServletRequest req, HttpServletResponse resp);

2.@RequestParam(...)注解修饰的    请求参数

   修饰形参时,@RequestParam可以省略,表示形参的值来自请求参数

   默认情况下String,也可以使用其他基本类型替换

3.HttpSession


二、什么是UUID

UUID是通用唯一识别码的缩写,是一种软件建构的标准。目的是让分布式系统中的所有元素都能有唯一的辨识信息,不需要中央控制器来做辨识信息的指定。每个人都可以创建与其他人不冲突的UUID,就不需要考虑数据库创建时的名称重复问题。

比如,临时文件的文件名就是UUID形成的。

三、redirect 和 forward有啥区别?

重定向:买《暗杀》,老师告诉你应该买《活着》,又去买《活着》了

            有两次HTTP请求

转发:买《暗杀》,老师找了一本《活着》换成《暗杀》的名字给你

           只有一次HTTP请求

MVC能工作的前提:引入thymeleaf依赖

如果不引入,返回的所有view-name都被视为forward

四、AOP

AOP:并不是spring独有的功能,只是一种理念。

AOP——靠对象代理完成

对象代理能力:AOP、Mybatis

JDK原生提供的对象代理能力,只能作用到接口上,必须要有一个接口(限制比较大),所以,由第三方库CHLib,专门去做对象代理,功能更强大!

从代码组织的角度,这种代码的组织方式有缺点,如果公共部分要重构,则需要调整一堆源码文件。(改动越多,出错的风险越大)

使用Spring中AOP。Spring并没有支持所有的概念,是AOP的概念。

1.要使用AOP需要修改依赖关系:

2.如何定义一个切面?

1.首先把类注册到spring
    @Component
2.需要声明这个类是一个 切面类
如果导入的时候没有@Aspect 注解,说明你忘记更改pom.xml中的spring-boot-starter-aop
    @Aspect
//这样,就定义了一个切面出来public class MyAspect {

 对象代理(使用Proxy对象,替代Target对象)

调用的时候,优先把控制权交给Proxy去处理

配合IOC,功能更强大了。

功能上,实现AOP +Mybatis原理

AOP是面向切面编程。(切面、切点、通知)(编织、连接点...)

编织:  JDK原生 /  CGLib

使用:@Aspect + @Component定义切面类

          @Pointcut("...")   定义切点(表现在Spring中是一个方法体,方法体是空的)

          表达式:        "execution(...)"          "annotation(...)"

通过@Before、@AfterThrowing、@Around定义通知(Advice)

AOP能生效,原理就是对象代理在起作用。  切面、切点、通知缺一不可 && 不能通过this调用

 

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

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

相关文章

VK0256/B/C玩具、冷气机等段码液晶驱动芯片(IC)(32EGx8COM)技术资料选表

K PP 2543型号:VK0256/B/C封装形式:QFP64/LQFP64/LQFP52 VK0256/B/C是一个点阵式存储映射的LCD驱动器,可支持最大256点(32EGx8COM)的LCD屏。单片机可通过3/4线串行接口配置显示参数和发送显示数据,也可通过…

与ChatGpt聊天,学习golang标签的反射机制

与ChatGpt聊天,学习golang标签的反射机制引ChatGPT火了以后,本拐先是恐惧,之后是拥抱。最近很多编程知识的学习,都是通过 chatgpt来搞定。众所周知,本拐就是一个啥技术都半斤八两的程序员,这次,…

05服务发现:引入etcd服务注册中心

在分布式微服务架构中,服务注册发现组件(通常称为服务注册中心)往往有着举足轻重的作用,它的性能与稳定可能会直接影响到整个服务的状态,比如Spring Cloud中的Eureka、Dubbo中的Zookeeper等等,接下来我们就gRPC微服务中最常见的服务注册中心etcd,来讲述下两者在具体是怎…

Mr. Cappuccino的第41杯咖啡——Kubernetes之Pod调度策略

Kubernetes之Pod调度策略Pod的4种调度策略定向调度nodeNamenodeSelector亲和性调度node亲和性硬限制软限制关系运算符pod亲和性pod反亲和性污点和容忍污点(taints)容忍(tolerations)默认情况下,Scheduler计算出一个Pod…

conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置

conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置一、TensorFlow 环境配置安装1. Anaconda下载安装2.conda创建tensorflow环境二、pycharm以及VS2022 环境配置2.1 pycharm 软件安装以及环境配置2.2.1 pycharm 软件安装2.2.2 pycharm 软件conda环境配置2.2 Visual Stu…

注意!华为折叠屏手机的原厂膜不能自己撕!

对于用惯了直板手机的朋友来说,新机开箱撕膜是一件十分有“仪式感”的事情,但是对于折叠屏手机来说,这样的操作万万不可。华为折叠屏手机在使用的过程中也有着和传统智能手机不一样的注意事项,下面这几点大家在入手折叠屏手机之后…

如何利用Power Virtual Agents机器人进行设备维修登记

今天我们来介绍如何利用PVA聊天机器人进行设备维修登记。设计思路是在PVA聊天机器人的对话框中输入“设备维修”触发短语后进行设备维修登记,然后通过自动化流程将维修信息存入到Lists中并通过邮件的形式发送给负责设备维修的人员。 首先,在PVA聊天机器人…

【yolov5】将标注好的数据集进行划分(附完整可运行python代码)

问题描述 准备使用yolov5训练自己的模型,自己将下载的开源数据集按照自己的要求重新标注了一下,然后现在对其进行划分。 问题分析 划分数据集主要的步骤就是,首先要将数据集打乱顺序,然后按照一定的比例将其分为训练集&#xf…

【Blender】使用Blender渲染一段360度旋转的动画

目录一、前言二、方法描述三、渲染设置四、结果一、前言 本文主要讲述了如何使用Blender渲染一段物体360度旋转的动画。 渲染好的效果如下: 二、方法描述 第一步:shiftA,我们在Blender里新建一个平面 第二步:摁s键(scale)&…

(三十五)Vue之过渡与动画

文章目录概述单元素/组件的过渡CSS动画CSS过渡多元素/组件的过渡集成第三方动画Animate上一篇:(三十四)Vue之新生命周期钩子nextTick 概述 Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具&…

PyTorch常用的损失函数(ChatGPT)

L1Loss nn.L1Loss 也称为平均绝对误差(Mean Absolute Error,MAE)。它计算预测值与真实值之间的差异(即误差),然后取绝对值并求和,最后除以样本数量得到平均误差。具体来说,对于一批…

萌新应该如何开始学习走向自动化测试高薪岗位?

对于测试人员来说,不管进行功能测试还是自动化测试,还是性能测试,都是需要编写测试用例,所以我们必须先要了解清楚手工测试用例与自动化测试用例的一些特点,才能更好的开展自动化测试工作。1.1手工测试用例和自动化测试…

最新中文版Studio One6音乐制作DAW工具

你现在用的是什麽 DAW?大家常常在说的 DAW ,就是指数位音乐工作站软件,像是常见的 Ableton、Logic、Protools、Cubase 等等,这些都算是 DAW。以上的例子,他们的完整版几乎都是需要花费购买的,当然也有一些免…

【Go基础】Socket和WebSocket编程

文章目录一、Socket编程1. 网络通信过程2. TCP CS架构2.1 网络通信模型2.2 TCP协议解读2.3 Go TCP编程3. UDP CS架构3.1 UDP协议解读3.2 Go UDP编程二、WebSocket编程1. WebSocket协议解读2. WebSocket CS架构实现3. 聊于室实现一、Socket编程 1. 网络通信过程 DMA&#xff1a…

Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问

文章目录概述实操Step 1 验证当前版本是否支持安全功能Step 2 打开安全设置Step 3 配置节点间通讯传输的安全性创建证书颁发机构为Elasticsearch集群中的节点生成证书Step 4 修改 elasticsearch.yml配置设置 用户名和密码概述 ES版本: 7.6 官方指导手册&#xff1…

Spring MVC之WebApplicationContext 容器的初始化

简介因为 spring-mvc项目,是 spring-framework的子项目,所以需要拉取 spring-framework整个工程,包含 Spring 所有的子项目前期准备工作源码拉取从 Spring 的 Git 仓库 Fork 项目到自己的 Git 仓库,方便我们在阅读源码的过程中&am…

3年软件测试工作经验裸辞,有点后悔了...

2019年毕业,现在有3年的软件测试工作经验,刚毕业前半年在一家知名上市公司,后面则进入一家传统行业公司待到现在2年半。 由于看不到技术成长以及其他原因,上上周辞职了,目前交接中,下个月中旬就得离开了&a…

基于国产龙芯 CPU 的气井工业网关研究与设计(一)

当前,我国气田的自动化控制程度还未完全普及,并且与世界已普及的气井站的自 动化程度也存在一定的差距。而在天然气资源相对丰富的国家,开采过程中设备研发资 金投入较大,研发周期较长,更新了一代又一代的自动化开采系…

看过来,u盘删除的文件还能找回吗?两种方法,

u盘删除的文件还能找回吗?u盘,全称USB闪存驱动器,它不需物理驱动器,即插即用,且其存储容量远超过软盘,方便携带使用。u盘作为我们常用的存储设备,也是有自己不同功能和划分。以下例举了几种&…

ArcGIS API for JavaScript 4.15系列(8)——Dojo中类的定义

1、前言 JavaScript本质上是基于原型继承的一种编程语言,在ES6标准出现以前,JavaScript定义类的方式往往让人很难理解。而Dojo则很好地解决了这个问题。开发者可以通过dojo/_base/declare模块定义类,也可以通过define引用各个类模块。本文就…