Java整理18

1、AOP

AOP概念:通过预编译方式和运行期动态代理方式实现,在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。
动态代理分类:JDK动态代理:有接口代理对象和目标对象实现同样的接口cglib动态代理:无接口继承被代理的目标类
(1)引入aop相关的依赖
(2)创建目标资源(接口和实现类)
(3)创建切面类(切入点和通知类型)切面类上加@Aspect[声明是切面类]@Component[说明是由IOC容器管理]
xml配置中开启aspectj自动代理,为目标对象生成代理
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

2、切入点和通知类型

通知类型:前置@Before	返回@AfterReturning	异常@AfterThrowing	后置@After	环绕@Around
@Before(value="切入点表达式配置切入点")
execution_1(public_2 int_3 com.atgui.spring.aop_4.caculator_5.div_6(7))
1-固定格式、2-权限修饰符、3-方法返回值、4-包名、5-类名、6-方法名、7-参数列表
2、3、4、5、6都可以用通配符*表示,7(..)表示参数列表任意
@Before(切入点表达式)
public void beforeMethod(JoinPoint joinpoint获取切入点信息)
{String methodname=joinpoint.getSignature().getName();Object[] objects=joinpoint.getArgs();
}
返回通知:@AfterReturning(切入点表达式,returning="自定义"获取返回值)public void afterReturning(JoinPoint joinpoint,Object 自定义)
异常通知:@AfterThrowing(切入点表达式,throwing="自定义"获取方法的异常信息)public void afterThrowing(JointPoint joinpoint,Throwable 自定义)
环绕通知:@Around(切入点表达式)public Object aroundMethod(ProceedingJoinPoint pjoinpoint){try{Object result=pjoinpoint.proceed();}catch{ }finally{ }}
重用切入点表达式:@Pointcut(value=切入点表达式)public void PointCut_方法名(){}重用:@After(value="PointCut()")			同一个包下@After(value="包名.类名.方法名")		不同包

3、切面优先级

外层高于内层,@Order(值),值越小,优先级越高

4、xml配置文件设置通知类型

开启组件扫描
<aop:config><aop:aspect ref="类名称">	//配置切面类<aop:pointcut id="自定义" expression="切入点表达式"/>配置通知类型:<aop:before method="方法名" poincut-ref="自定义"></aop:before>	前<aop:after method="方法名" poincut-ref="自定义"></aop:after>	后<aop:after-returing method="方法名" poincut-ref="自定义" returning="返回名"></aop:after-returing>	返回

5、Spring整合Junit

(1)依赖引入<artifactId>spring-text</artifactId>
(2)测试类@SpringJunitConfig(locations="classPath:bean.xml")

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

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

相关文章

Symfony 表单构建器:创建和管理表单的最佳实践

Symfony 表单构建器&#xff1a;创建和管理表单的最佳实践 Symfony 是一个流行的 PHP 框架&#xff0c;以其强大的功能和灵活性闻名。表单构建器是 Symfony 中一个非常重要的组件&#xff0c;它提供了简单且高效的方式来创建和管理表单。本文将详细介绍 Symfony 表单构建器的最…

利用jdk自带keytool工具生成jks签名文件注意事项

如题&#xff0c;用三个不同版本jdk生成jks文件&#xff0c;并配置到Android Studio里面验证&#xff0c;结果如下&#xff1a; jdk1.8&#xff1a;正常 jdk11、jdk17&#xff1a;出错&#xff0c;错误日志如下 FAILURE: Build completed with 2 failures.1: Task failed with…

RAG技术之Router

Router有什么用&#xff1f; 在RAG应用中&#xff0c;Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源&#xff0c;比如是否需要进行语义检索、是否需要进行text2sql查询&#xff0c;是否需要用function call来进行API调用。 Router也可以根据用户的查询…

麦田物语第十五天

系列文章目录 麦田物语第十五天 文章目录 系列文章目录一、构建游戏的时间系统二、时间系统 UI 制作总结 一、构建游戏的时间系统 在该游戏中我们要构建年月日天时分秒等时间的概念&#xff0c;从而实现季节的更替&#xff0c;昼夜的更替等&#xff08;不同的季节可以播种不同…

qt总结--翻金币案例

完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…

YOLO5项目目录最强解析

YOLO5项目目录解析 YOLOv5 项目目录下的文件和目录的结构&#xff0c;以下是对每个目录和文件的解释&#xff1a; 目录 &#x1f4c1; .github: 存放 GitHub 相关配置和文件&#xff0c;如 GitHub Actions 工作流文件、Issue 模板等&#xff0c;用于自动化构建和持续集成等功…

MYSQL 第五次作业

一、第五次作业 二、建立触发器 在订单表中增加订单数量后&#xff0c;商品表的商品数量同步减少对应的商品订单出数量&#xff1b;客户取消订单时恢复商品表对应商品的数量&#xff1b;当客户修改订单时&#xff0c;商品表对应商品的数量同步更新。 3、存储 DELIMITER $$ CREA…

USB 2.0 协议专栏之 USB 2.0 连接与枚举(二)

前言&#xff1a;本篇博客为手把手教学的 USB 2.0 协议栈类精品博客&#xff0c;该专栏博客侧重针对 USB 2.0 协议进行讲解。本篇博客将针对 USB 2.0 中的连接与枚举进行教学&#xff0c;USB 的枚举过程是 USB 协议中至关重要的一环&#xff0c;也是嵌入式工程师必须掌握的内容…

Python层内层外多图布局图基分析

&#x1f3af;要点 &#x1f3af;多层图和多路复用图结构模型 | &#x1f3af;图结构变换、读写图、聚类系数、可视化、同构、图基分析 | &#x1f3af;稀疏网络边数和节点数线性扩展 | &#x1f3af;耦合边的生成和惰性评估 | &#x1f3af;层内布局计算、多层网络绘图、层间…

世界的三大财团都是谁在控制?

在美国的华尔街有三巨头&#xff0c;他们是世界的三大财团&#xff0c;管理着将近22万亿美元的财富。这个数字是个什么概念呢&#xff0c;我们打个比方&#xff0c;欧盟27国再加上日本一年的GDP也不过才刚刚好20万亿美元。这三大财团分别是&#xff1a;第一是贝莱德管理着10万亿…

基于深度学习网络的USB摄像头实时视频采集与水果识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将usb摄像头对准一个播放不同水果图片的显示器&#xff0c;然后进行识别&#xff0c;识别结果如下&#xff1a; 本课题中…

智能火灾预警系统:基于深度学习的火焰与烟雾检测平台

基于深度学习的火焰与烟雾检测系统&#xff08;UI界面YOLOv8/v7/v6/v5代码训练数据集&#xff09; 引言 火灾是对人类生命和财产安全的严重威胁&#xff0c;及时检测和报警是减少火灾损失的关键。传统的火焰和烟雾检测方法主要依靠传感器&#xff0c;但这些方法存在检测范围有…

Vue3--

一、pinia &#xff08;集中式状态&#xff08;数据&#xff09;管理&#xff09; 1、准备一个效果 2、存储读取数据 3、修改数据三种方式 4、storeToRefs 5、getters 当state中的数据&#xff0c;需要经过处理后在使用时&#xff0c;可以使用getters配置 6、$subscribe的使用…

【Oracle 进阶之路】SQL 简介

SQL 的历史 E. F. Codd 博士于 1970 年 6 月在计算机机械协会 &#xff08;ACM&#xff09; 期刊 Communications of the ACM 上发表了论文“A Relational Model of Data for Large Shared Data Banks”。Codd 模型现在被接受为关系数据库管理系统 &#xff08;RDBMS&#xff…

mqtt:测试eclipse paho qos=1的数据重发的功能

# 测试程序 【pom.xml】 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version></dependency><dependency…

Unity横版动作游戏 -瓦片地形和动画瓦片

(规则瓦片)瓦片地形和动画瓦片 准备阶段 在Tilemap中创建一个新的文件夹起名叫做Rule Tile&#xff0c;创建一个Rule Tile&#xff0c;用来设置瓦片地形&#xff0c;我们将用他来绘制地形图&#xff0c;类似于Godot中的瓦片地形。 这里给他取名为了Ground 1&#xff0c;用于创…

C++——vector在使用过程中迭代器失效的几个常见情景

在使用vector的时候我们可以会遇到需要在已有对象的某个数据之前插入一个数据再对被插入的数据进行修改操作&#xff0c;情况如下&#xff1a; 这段代码在编译器的过程中并不会出现问题&#xff0c;可是一旦运行程序就会出现程序崩溃&#xff0c;这里就是迭代器失效的第一种情况…

如何使用 HTTPie 进行高效的 HTTP 请求

如何使用 HTTPie 进行高效的 HTTP 请求 引言 HTTPie 是一个命令行 HTTP 客户端&#xff0c;它以其简洁的语法和人性化的输出格式赢得了广大开发者的喜爱。与 curl 相比&#xff0c;HTTPie 提供了更加直观和用户友好的接口&#xff0c;使得执行 HTTP 请求变得轻松愉快。本文将…

PVE环境中调整虚拟机磁盘大小

我的希望将PVE中的虚拟机磁盘调整一下&#xff0c;增加20GB。在查询了一些资料后&#xff0c;做一下总结教程。 环境是 PVE8.2.2 版本&#xff0c;虚拟机系统是centos7.9.2009-minimal&#xff0c; 安装系统时划分磁盘分区方式是默认分区方式&#xff08;不同分区方式下&#…

pinia安装及简介

pinia简介 基本特点 轻量级&#xff1a;Pinia相比于传统的Vuex&#xff0c;体积更小&#xff0c;性能更好&#xff0c;只有大约1KB左右。 简化API&#xff1a;Pinia简化了状态管理库的使用方法&#xff0c;抛弃了Vuex中的mutations&#xff0c;只保留了state、getters和actions…