Java学习Day40:大战亢金龙!(spring框架之AOP)

AOP(面向切面变成):不改变原有代码的情况下,对代码进行功能添加

1.一些概念

抽取出的方法:通知

原始方法:成为连接点(可以是程序执行中的任意位置),对应原始的一个个方法

要追加功能的方法:定义为切入点,没有追加通知的就不是切入点

切面:通知和切入点对应的关系(在那个切入点上执行哪些通知)

囊括通知的类:通知类

2.小案例:

1.坐标

 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.20</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency>

2.配置文件springConfig

package viki.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration
@ComponentScan("viki")
@EnableAspectJAutoProxy//告诉程序要用注解开发AOP
public class springConfig {
}

3.设置切入点,连接点(通知类)

@Component
@Aspect//声明
public class cutPointMethod {@Pointcut("execution(void viki.Dao.DaoImp.bookDaoImp.updata())")private void pc(){}//定义切入点@Before("pc()")//连接点public void time(){System.out.println(System.currentTimeMillis());}
}

4.一些类

import org.springframework.stereotype.Repository;
import viki.Dao.bookDao;
@Repository
public class bookDaoImp implements bookDao {@Overridepublic void save() {System.out.println(System.currentTimeMillis());System.out.println("Bookdao save");}@Overridepublic void updata() {System.out.println("BookDAOUPDATA");}
}

3.AOP工作流程

4.切入点表达式

两种描述都可以

识别时可反向识别    ..未知包 .此处*一定是类或接口   此处*一定是方法()

例子:

给所有业务层查找方法增加AOP

4.AOP通知类型

当原方法有返回值时,使用Around的最后,需要抛出返回值,类型和原方法相同

1.设定obj类型返回值

2.使用ProceedingJoinPoint类型的参数实现对原始方法的调用

3.接受返回值

5.小案例(接口层万次效率)

1.在SpringConfig中打开AOP

2.创建切面类,切入点

PointCut("execute ( *给业务层所有方法加统计,返回值设置为*  com.packages.services.*services.*(..)) ")

改良,加上具体是哪个方法

6.AOP通知获取数据

1.参数

可以实现,使用一个AOP,获取到参数时,判断或修改获取到的参数,实现参数合法化

2.返回值

3.异常

小总结:

7.总结

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

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

相关文章

NVDLA专题14:Runtime environment-用户模式驱动

运行时环境&#xff08;runtime environment&#xff09;包括在兼容的NVDLA硬件上运行编译神经网络的软件。 它由两部分组成: 用户模式驱动&#xff08;User Mode Driver, UMD&#xff09;: 这是应用程序的主接口&#xff0c;正如Compile library中所详述的&#xff0c;对神经…

网络药理学:1、文章基本思路、推荐参考文献、推荐视频

文章基本思路 选择一味中药或者中药复方&#xff08;常见的都是选择一味中药&#xff0c;如&#xff1a;大黄、银柴胡等&#xff09;&#xff0c;同时选择一个要研究的疾病&#xff08;如食管癌等&#xff09;获得中药的主要化学成分或者说活性成分&#xff08;有时候也以化合…

第146天:内网安全-Web权限维持各语言内存马Servlet-api类Spring类Agent类

目录 前置知识及资源 案例一&#xff1a; 权限维持-Web-内存马-PHP 案例二&#xff1a; 权限维持-Web-内存马-Python 案例三&#xff1a; 权限维持-Web-内存马-JAVA 案例四&#xff1a; 权限维持-Web-内存马-哥斯拉&冰蝎 哥斯拉 ​编辑 冰蝎 前置知识及资源 什么是…

程序员如何写笔记并整理资料?

整理笔记 word。没错&#xff0c;我也看了网上一大堆软件&#xff0c;还有git管理等等。个人认为如果笔记只是记录个人的经验积累&#xff0c;一个word就够了&#xff0c;那些notepad&#xff0c;laTex个人觉得不够简练。word。 1.word可以插入任何文件附件(目前最大的word 20…

C++笔记---list

1. list的介绍 list其实就是就是我们所熟知的链表&#xff08;双向循环带头结点&#xff09;&#xff0c;但其是作为STL中的一个类模板而存在。 也就是说&#xff0c;list是可以用来存储任意类型数据的顺序表&#xff0c;既可以是内置类型&#xff0c;也可以是自定义类型&…

六西格玛绿带培训多少钱

在探讨“六西格玛绿带培训多少钱”这一主题时&#xff0c;我们不得不深入了解六西格玛方法论在企业质量管理中的重要作用&#xff0c;以及绿带培训作为这一方法论推广和应用的关键环节。六西格玛&#xff0c;作为一种以数据驱动的管理哲学和方法论&#xff0c;旨在通过减少缺陷…

深入理解Java中的clone对象

目录 1. 为什么要使用clone 2. new和clone的区别 3. 复制对象和复制引用的区别 4.浅克隆和深克隆 5. 注意事项 1. 为什么要使用clone 在实际编程过程中&#xff0c;我们常常遇到这种情况&#xff1a;有一个对象 A&#xff0c;需要一个和 A 完全相同新对象 B&#xff0c;并…

ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决

问题 ModuleNotFoundError: No module named keras.layers.core&#xff0c;如图所示&#xff1a; 如何解决 将from keras.layers.core import Dense,Activation改为from tensorflow.keras.layers import Dense,Activation&#xff0c;如图所示&#xff1a; 顺利运行&#xf…

IOS Siri和快捷指令打开app

使用场景 需要Siri打开应用或者在自定义快捷指令打开应用&#xff0c;并携带内容进入应用。 1.创建Intents文件 1.1 依次点开File->New->File 1.2 搜索intent关键字找到 SiriKit Intent Definition File文件 1.3 找到刚才创建的Intent文件&#xff0c;点击然后New Inte…

【JS逆向学习】快乐学堂登陆接口(自定义DES加密、ddddocr验证码识别)

逆向目标 网址&#xff1a;https://www.91118.com/Passport/Account/Login接口&#xff1a;https://www.91118.com/passport/Account/LoginPost参数&#xff1a; passr 逆向过程 输入手机号、密码、验证码 点击登陆&#xff0c;多试几次&#xff0c;然后观察并比较不通请求…

MMO 地图传送,UI系统框架设计

地图传送 创建传送点 建碰撞器触发 //位置归零 建一个传送门cube放到要传送的位置&#xff08;这个teleporter1是传出的区域 这是从另一张地图传入时的传送门 创建一个脚本TeleporterObject给每个传送cube都绑上脚本 通过脚本&#xff0c;让传送门在编辑器下面还能绘制出来 …

GIT | git提交注释自动添加信息头

GIT | git提交注释自动添加信息头 时间&#xff1a;2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…

基于SpringBoot+Vue+MySQL的流浪猫狗宠物救助救援网站管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今社会&#xff0c;随着宠物数量的激增及人们关爱动物意识的提升&#xff0c;流浪猫狗问题日益严峻。为解决这一问题&#xff0c;构建一套高效、便捷的流浪猫狗宠物救助救援网站管理系统显得尤为重要。本系统基于SpringBoot…

CSP-CCF★★★201812-2小明放学★★★

目录 一、问题描述 二、解答 &#xff08;1&#xff09;注意&#xff1a; &#xff08;2&#xff09;80分版&#xff1a; &#xff08;3&#xff09;100分版&#xff1a; 三、总结 一、问题描述 二、解答 &#xff08;1&#xff09;注意&#xff1a; 题目的n小于等于10的…

m3u8网页视频文件爬取与视频合成

文章目录 m3u8网页视频文件爬取与视频合成下载m3u8文件下载m3u8文件列表所对应的ts文件下载ffmpeg m3u8网页视频文件爬取与视频合成 我们经常在网络上找到的自己想要的视频素材却无法下载&#xff0c;并且打开控制台一看视频是通过分割成一份份的.ts文件发送过来的。 下载m3u8…

零信任安全:重新思考数字世界的访问

目录 ​编辑 网络安全形势的演变 数字安全的变化 引入零信任安全 零信任的当今意义 了解零信任原则 零信任架构的核心概念 实施微分段 持续验证&#xff1a;积极主动的立场 与传统安全模型的对比 在现代企业中实施零信任 零信任实施基础知识 多重身份验证 (MFA) 的…

c++(继承、模板进阶)

一、模板进阶 1、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中…

非监督式机器学习:群集

聚类分析是一种非监督式机器学习形式&#xff0c;在此形式下&#xff0c;基于观察值的数据值或特征的相似性&#xff0c;将观察值分组到群集中。 这种就是非监督式机器学习&#xff0c;因为它不使用先前已知的标签值来训练模型。 在聚类分析模型中&#xff0c;标签是群集&#…

帧缓冲 framebuffer

一、基本概念 framebuffer: 帧缓存、帧缓存&#xff08;显示设备&#xff09; Linux内核为显示提供的一套应用程序接口。&#xff08;驱动内核支持&#xff09; 分辨率&#xff1a; 像素点 显示屏&#xff1a;800 * 600&#xff08;横向有800个像素点&#xff0c;纵向有60…

DAY73

作业 pro文件&#xff1a; QT texttospeech 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QLabel> //标签类 #include <QLineEdit> //行编译器类 #include…