当前位置: 首页 > news >正文

spring Aop使用示例

简介(aop作用):1.在不改变源代码的基础上进行功能添加,如日志打印、执行时间统计。2.与代理效果类似但更加便捷。

示例:

        maven依赖:

      <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.7</version></dependency>
<!--        测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>

        dao接口:

public interface UserDao {public void save();
}

        dao实现类:

@Component  //声明为组件
public class UserDaoIim  implements UserDao {@Overridepublic void save() {System.out.println("save");}
}

        spring配置类(@EnableAspectJAutoProxy):

@Configuration //定义为配置类
@ComponentScan("")//包扫描
@EnableAspectJAutoProxy //开启aop
public class SpringConfig {}

        通知类(核心):

@Aspect
@Component
public class MyAop {@Pointcut("execution(void com.dt.dao.UserDao.save())")//单的方法增强// @Pointcut("execution(void com.dt.dao.UserDao.*(参数))")//对所有方法增强,参数没有就不填public void pt(){}@Before("pt()")//对切点pt所代理的方法执行前增强public void  before(){System.out.println("执行前增强");}@After("pt()")//对切点pt所代理的方法执行后增强public void  after(){System.out.println("执行后增强");}@Around("pt()")//对切点pt所代理的方法执行环绕增强public void  around(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println("around,执行前增强");joinPoint.proceed();System.out.println("around,执行后增强");}@AfterReturning("pt()")//对切点pt所代理的方法返回后通知public void  fterReturning()  {System.out.println("执行后返回增强");}@AfterThrowing("pt()")//对切点pt所代理的方法报错后通知public void  afterThrowing()  {System.out.println("执行报错后增强");}
}

        测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springConfig.xml");userDao = applicationContext.getBean(UserDao.class);userDao.save();}
}

相关文章:

spring Aop使用示例

简介&#xff08;aop作用&#xff09;&#xff1a;1.在不改变源代码的基础上进行功能添加&#xff0c;如日志打印、执行时间统计。2.与代理效果类似但更加便捷。 示例&#xff1a; maven依赖&#xff1a; <dependency><groupId>org.springframework</groupId&g…...

MySQL-InnoDB数据存储结构

1、存储结构-页 索引结构提供了高效的索引方式&#xff0c;索引信息以及数据记录都保存在数据文件或索引文件中&#xff08;本质存储在页结构中&#xff09; 1.1、磁盘与内存交互的基本单位&#xff1a;页 在InnoDB中将数据划分为若干页&#xff0c;页的默认大小为&#xff…...

【吊打面试官系列】Java高并发篇 - 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?

大家好&#xff0c;我是锋哥。今天分享关于 【什么是 Java Timer 类&#xff1f;如何创建一个有特定时间间隔的任务&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是 Java Timer 类&#xff1f;如何创建一个有特定时间间隔的任务&#xff1f; java.util.T…...

Spring生命周期深度解析

Spring生命周期深度解析 介绍 Spring是一个开源的Java框架&#xff0c;用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的开发方式&#xff0c;使得开发者可以更加专注于业务逻辑的实现&#xff0c;而不必过多关注底层的技术细节。 在使用Spring框架开发应用程序时…...

基于 Windows 的记事本简单功能开发及部署发布--迭代2.0

基于上篇文章基于 Windows 的记事本简单功能开发-CSDN博客 更新完成以下几个功能点&#xff1a; 1.中心部件更改为栅格布局 2.另存为功能&#xff1a; 打开文本保存框,用户选中文件保存时 得到绝对路径。 判断用户选择路径不为空。 得到用户输入内容。 创建文件对象&…...

Java lambda

forEach 比 for 语句的线程安全要求更严格。 如此语句使用for语句可以&#xff0c;但是forEach却不可以。...

【智能算法】河马优化算法(HO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;MH Amiri受到自然界河马社会行为启发&#xff0c;提出了河马优化算法&#xff08;Hippopotamus Optimization Algorithm, HO&#xff09;。 2.算法原理 2.1算法思想 …...

spring基础使用(案例)

基于xml使用&#xff1a; 准备&#xff1a; 1.Dao层&#xff08;接口&#xff09;&#xff1a; public interface UserDao {public void save(); } 1.1 Dao层&#xff08;实现类&#xff09;&#xff1a; public class UserDaoIim implements UserDao {Overridepublic vo…...

相同的树LeetCode

100. 相同的树 - 力扣&#xff08;LeetCode100. 相同的树 - 力扣&#xff08; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 /*** Definition…...

Vue中如何抽取部分代码到单独的ts文件

Vue中如何抽取部分代码到单独的ts文件 本文代码基于 简单示例 这段代码&#xff0c;是比较通用的代码&#xff0c;我想抽取成一个ts文件&#xff0c;来供其他地方调用。 const groupData reactive({groupList:[] as Array<GroupV2Response>,current:{} as GroupV2Re…...

山东齐鲁文化名人颜廷利:朱郭有文才,曲高‘菏’寡星光路

山东齐鲁文化名人颜廷利教授表示&#xff0c;朱郭&#xff08;谐音‘祖国’&#xff09;有文才&#xff0c;《曲高‘菏’寡》星光路… 山东菏泽歌手朱之文在2011年凭借一首《滚滚长江东逝水》一夜成名&#xff0c; 十多年之后的今天&#xff0c;菏泽市网络红人郭有才靠一首《诺…...

嵌入式学习70-复习(wireshark使用和http协议)

知识零碎&#xff1a; ssize_t 头文件&#xff1a;<sys/types.h> 有符号整型 --------------------------------------------------------------------------------------------------------------------------------- wireshark 1.sudo wireshark 2.选择 any &…...

idea配置MySQL提示

点击sql语句&#xff0c;然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库...

如何利用AI生成答辩PPT?笔灵AI答辩PPT,智能识别关键点

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…...

速盾:怎么设置cdn加速小程序图片?

小程序是一种基于微信平台的应用程序&#xff0c;为了提升小程序的用户体验&#xff0c;我们可以通过设置CDN&#xff08;内容分发网络&#xff09;来加速小程序中的图片加载速度。CDN是一种分布式服务&#xff0c;它将原始服务器的存储内容复制到在全球各地的缓存服务器&#…...

Android bootchart 分析启动性能工具使用

bootchart简介 bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像&#xff0c;可以用作进入 systrace 之前的快速健全性检查。 1. 板端配置&#xff1a; 在Android 板端启用 bootchart&#xff0c;请运行以下命令&#xff1a; 2. Bootch…...

一键开启,盲盒小程序里的梦幻奇遇

在这个充满惊喜与未知的数字时代&#xff0c;盲盒小程序以其独特的魅力成为了许多人的新宠。只需一键开启&#xff0c;你就能踏入一个充满梦幻奇遇的世界&#xff0c;探索未知的惊喜与乐趣。 盲盒小程序不仅仅是一个简单的购物平台&#xff0c;它更是一个充满神秘与惊喜的宝藏库…...

如何进行并行执行的诊断与调优 —— 《OceanBase 并行执行》系列 6

在诊断并行执行问题时&#xff0c;我们可以从两个主要方面展开分析。首先&#xff0c;从整体系统层面进行考量&#xff0c;比如检查网络是否畅通、磁盘IO是否过载、CPU资源是否已用满&#xff1b;其次&#xff0c;针对具体的SQL语句进行深入剖析&#xff0c;定位问题SQL&#x…...

【Ubuntu系统hgfs共享文件夹不显示问题解决】

问题描述&#xff1a;为了实现本地物理机与虚拟机之间的文件传输&#xff0c;我们通常采用共享文件夹的方式。但是在Vmware虚拟机使用Ubuntu系统的过程中&#xff0c;由于某种特殊或意外原因&#xff0c;Ubuntu系统或发生/mnt/hgfs共享文件夹丢失不显示的问题。以下是本次问题发…...

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 2 起源 与c语言一样&#xff0c;c也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...