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

AOP面向切面编程

1,注入依赖

  <!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency>

2,编写配置类


@Aspect//标识切面类
@Component
public class AopConfig {//切点@Pointcut("execution(public * com.tianji.aopdemo.service..*.*(..))")private void pt(){}//    @Before()前置通知
//    @After()后置通知
//    @AfterThrowing//异常通知
//    @AfterReturning//最终通知@Around("pt()")//环绕通知public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("开始时间:"+new Date());Object[] args= pjp.getArgs();Object ret = pjp.proceed(args);//执行目标方法//如果有@PrintTime注解 打印注解的title属性值Signature signature = pjp.getSignature();MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();if (method != null) {PrintTime methodAnnotation = method.getAnnotation(PrintTime.class);if (methodAnnotation != null) {System.out.println(methodAnnotation.title());}}System.out.println("结束时间:"+new Date());return ret;}}

3,只对带有@PrintTime注解的方法进行通知的方法:

    //切点
//@Pointcut("execution(public * com.tianji.aopdemo.service..*.*(..))")
//private void pt(){}//切点@Pointcut("@annotation(com.tianji.aopdemo.config.PrintTime)") //注解的目录private void pt() {}

4,还可以直接写成:(把通知和切入点结合)

    @Around("@annotation(printTime)")public Object around(ProceedingJoinPoint pjp,PrintTime printTime) throws Throwable {System.out.println("开始时间:" + new Date());Object[] args = pjp.getArgs();Object ret = pjp.proceed(args);//执行目标方法System.out.println(printTime.title());//打印注解的title属性System.out.println("结束时间:" + new Date());return ret;}

相关文章:

AOP面向切面编程

1&#xff0c;注入依赖 <!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</grou…...

C# WinForm —— 15 DateTimePicker 介绍

1. 简介 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般以 dtp 开头Format设置显示时间的格式&#xff0c;包含Long&#xff1a; Short&#xff1a; Time&#xff1a; Custom&#xff1a;采用标准的时间格式 还是 自定义的格式CustomFormat自定…...

SpringBoot中六种批量更新Mysql 方式效率对比

SpringBoot中六种批量更新Mysql 方式效率对比 先上结论吧,有空可以自测一下,数据量大时运行一次还时挺耗时的 效率比较 小数据量时6中批量更新效率不太明显,根据项目选择合适的即可,以1万条为准做个效率比较,效率从高到低一次排名如下 replace into和ON DUPLICATE KEY效率最…...

【SpringBoot】SpringBoot整合jasypt进行重要数据加密

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f4d5;jasypt简介 &#x1f525;SpringBoot使用jasypt &#x1f4c2;创建我需要的数据库文件 &#x1f4d5;引入依赖 &#x1f513;配置数据库文件&#xff08;先不进行加密&#xff09; &#x1f319;创…...

【Go语言入门学习笔记】Part1.梦开始的地方

一、前言 经过一系列的学习&#xff0c;终于有时间来学习一些新的语言&#xff0c;Go语言在现在还是比较时髦的&#xff0c;多一个技能总比不多的好&#xff0c;故有时间来学一下。 二、配置环境 按照网络中已有的配置方法配置好&#xff0c;本人采用了Jetbrain的Goland&#…...

数据特征降维 | 主成分分析(PCA)附Python代码

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术和探索性数据分析方法,用于从高维数据中提取出最重要的特征并进行可视化。 PCA的基本思想是通过线性变换将原始数据投影到新的坐标系上,使得投影后的数据具有最大的方差。这些新的坐标轴称为主成分…...

当服务实例出现故障时,Nacos如何处理?

当服务实例出现故障时&#xff0c;Nacos的应对策略 在微服务架构日益盛行的今天&#xff0c;服务之间的稳定性与可靠性成为了我们架构师们不得不面对的重要课题。尤其是在面对服务实例出现故障时&#xff0c;如何确保整个系统的稳定运行&#xff0c;成为了我们首要考虑的问题。…...

遥感数据集制作(Potsdam数据集为例):TIF图像转JPG,TIF标签转PNG,图像重叠裁剪

文章目录 TIF图像转JPGTIF标签转PNG图像重叠裁剪图像重命名数据集转COCO格式数据集转VOC格式 遥感图像不同于一般的自然图像&#xff0c;由于波段数量、图像位深度等原因&#xff0c;TIF图像数据不能使用简单的格式转换方法。本文以Potsdam数据集为例&#xff0c;制作能够直接用…...

根据web访问日志,封禁请求量异常的IP,如IP在半小 时后恢复正常则解除封禁

在网络安全日益受到重视的今天&#xff0c;如何有效防范恶意流量和攻击成为了每个网站管理员必须面对的问题。恶意流量不仅会影响网站的正常运行&#xff0c;还可能导致服务器崩溃&#xff0c;给网站带来不可估量的损失。为了应对这一问题&#xff0c;我们特别推出了一款实用的…...

2.go语言初始(二)

本篇博客涉及到go 的基础数据类型、 go 语言中的运算符、转义字符、格式化输出、字符串操作 go 语言中的运算符 在 go 语言中&#xff0c;基本数据类型主要包括以下几类&#xff1a;整数类型、浮点数类型、复数类型、布尔类型、字符串类型、字节类型&#xff08;byte&#xf…...

MQTT对比HTTP

吞吐量&#xff1a;根据3G网络的测量结果&#xff0c;MQTT的吞吐量比HTTP快93倍。这意味着在相同的网络条件下&#xff0c;MQTT能够更有效地传输数据&#xff0c;从而在处理大量数据或实时数据传输时具有更高的效率。架构与模式&#xff1a;MQTT基于发布/订阅模型&#xff0c;提…...

暴力数据结构之二叉树(堆的相关知识)

1. 堆的基本了解 堆&#xff08;heap&#xff09;是计算机科学中一种特殊的数据结构&#xff0c;通常被视为一个完全二叉树&#xff0c;并且可以用数组来存储。堆的主要应用是在一组变化频繁&#xff08;增删查改的频率较高&#xff09;的数据集中查找最值。堆分为大根堆和小根…...

死锁调试技巧:工作线程和用户界面线程

有人碰到了一个死锁问题&#xff0c;找到我们想请我们看看&#xff0c;这个是关于应用程序用户界面相关的死锁问题。 我也不清楚他为什么会找上我们&#xff0c;可能是因为我们经常会和窗口管理器打交道吧。 下面&#xff0c;我们来看看死锁的两个线程。 >> 请移步至 …...

蓝桥杯-外卖店优先级(简单写法)

“饱了么”外卖系统中维护着 N 家外卖店&#xff0c;编号 1∼N。 每家外卖店都有一个优先级&#xff0c;初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位&#xff0c;如果外卖店没有订单&#xff0c;则优先级会减少 1&#xff0c;最低减到 0&#xff1b;而如果外卖店有订…...

VueRouter使用总结

VueRouter 是 Vue.js 的官方路由管理器&#xff0c;用于构建单页面应用&#xff08;SPA&#xff09;。在使用 VueRouter 时&#xff0c;开发者可以定义路由映射规则&#xff0c;并在 Vue 组件中通过编程式导航或声明式导航的方式控制页面的跳转和展示。以下是 VueRouter 使用的…...

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动传递的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应…...

Leaflet.canvaslabel在Ajax异步请求时bindPopup无效的解决办法

目录 前言 一、场景重现 1、遇到问题的代码 2、问题排查 二、通过实验验证猜想 1、排查LayerGroup和FeatureGroup 2、排查Leaflet.canvaslabel.js 三、柳暗花明又一村 1、点聚类的办法 2、歪打正着 总结 前言 在上一篇博客中介绍了基于SpringBoot的全国风景区WebGIS按…...

Go 处理错误

如果你习惯了 try catch 这样的语法后&#xff0c;会觉得处理错误真简单&#xff0c;然后你再来接触 Go 的错误异常&#xff0c;你会发现他好复杂啊&#xff0c;怎么到处都是 error&#xff0c;到处都需要处理 error。 首先咱们需要知道 Go 语言里面有个约定&#xff0c;就是一…...

python读取excel数据写入mysql

概述 业务中有时会需要解析excel中的数据&#xff0c;按照要求处理后&#xff0c;写入到db中&#xff1b; 用python处理这个正好简便快捷 demo 没有依赖就 pip install pymysql一下 import pymysql from pymysql.converters import escape_string from openpyxl import loa…...

flutter日期选择器仅选择年、月

引入包&#xff1a;flutter_datetime_picker: 1.5.0 封装 import package:flutter/cupertino.dart; import package:flutter/material.dart; import package:flutter_datetime_picker/flutter_datetime_picker.dart;class ATuiDateTimePicker {static Future<DateTime> …...

FreeRTOS SMP多核调试踩坑记:在TC397上如何确认你的任务真的跑在了对的CPU核心?

TC397多核调试实战&#xff1a;如何验证FreeRTOS任务真的跑在指定核心&#xff1f; 调试多核系统就像在迷宫中寻找出口——即使代码看起来正确&#xff0c;任务也可能悄悄溜到错误的核心上执行。当LED闪烁频率异常、任务响应延迟或系统出现难以解释的锁死时&#xff0c;开发者首…...

写论文缺参考文献?教你一招最快的反向查文献

写文献综述、毕业论文、科研报告时&#xff0c;你是不是也常遇到这些难题&#xff1a;观点明明写得很清楚&#xff0c;却找不到权威文献支撑&#xff1b;文献综述凑不够篇幅&#xff0c;论据来源不充分&#xff1b;逐篇翻数据库筛选文献太耗时&#xff0c;引文格式排版还总出错…...

《从GIS前端到AIGC大厂:WebGIS、WebGL、Three.js技术栈的底层能力拆解与岗位适配指南》

前端GIS技术栈&#xff1a;从图形学底层到AIGC营销增长的全链路实战指南 &#xff08;附大厂AI前端JD精准匹配与可落地项目&#xff09; &#x1f516; 目录理论篇&#xff1a;GIS中必学的图形学、WebGL、Three.js核心内容&#xff08;含GIS实战细节&#xff09; 1.1 计算机图形…...

3步搞定Unity游戏中文翻译:XUnity.AutoTranslator完全指南

3步搞定Unity游戏中文翻译&#xff1a;XUnity.AutoTranslator完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍而苦恼吗&#xff1f;想体验原汁原味的游戏内容却看不懂菜…...

【C#vsPython·第一阶段】 Python 的运算符,有些地方真的“骚“

在 C# 里判断一个数在 0 到 10 之间&#xff0c;你得写 x > 0 && x < 10。 在 Python 里&#xff1f;直接写 0 < x < 10。对&#xff0c;就这么简单&#xff0c;编译器...哦不&#xff0c;解释器不会报错。 当我第一次看到这个写法的时候&#xff0c;我心…...

Node.js调用Llama.cpp:本地部署大语言模型的完整指南

1. 项目概述&#xff1a;当Llama遇见Node.js如果你最近在折腾大语言模型&#xff08;LLM&#xff09;的本地部署&#xff0c;特别是对Meta的Llama系列模型情有独钟&#xff0c;同时又是一名Node.js开发者&#xff0c;那么你很可能已经听说过或者正在寻找一个像withcatai/node-l…...

终极GitHub加速方案:3步让你的下载速度飙升10倍

终极GitHub加速方案&#xff1a;3步让你的下载速度飙升10倍 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub的龟速下载…...

一篇文章吃透SpringBoot:自动配置原理与项目实战

一篇文章吃透SpringBoot:自动配置原理与项目实战 目录 1、springboot简介 2、springboot入门 3、热部署组件(DevTools) 4、springboot整合jsp 5、application.properties 6、springboot整合mybatis 7、springboot整合lombok 8、springboot实现单元测试 9、springboot整合drui…...

RISC-V RT-Thread Smart用户态应用编译与QEMU运行实战指南

1. 项目概述&#xff1a;从内核到应用的完整RISC-V生态体验最近在折腾RT-Thread Smart&#xff08;简称RTT-Smart&#xff09;这个微内核实时操作系统&#xff0c;目标平台是qemu模拟的64位RISC-V虚拟机&#xff08;qemu-virt64-riscv&#xff09;。整个过程的核心&#xff0c;…...

3个核心优势:重新定义Windows平台Fastboot工具的工作流

3个核心优势&#xff1a;重新定义Windows平台Fastboot工具的工作流 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance FastbootEnhance是一款专为Win…...