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

spring aop 内部引用失效分析

背景

用了spring retry 发现在有些场景下失效,也让我想起了之前看spring 事务时会有一些场景下失效的这个问题

代码


接口public interface UserService {public void start() ;public void stop();
}实现类
@Service
public class UserServiceImpl implements UserService {@Override@Retryable()public void start() {if (1 == 1) {throw new RuntimeException();}}@Overridepublic void stop() {start();}
}

测试

ConfigurableApplicationContext run = SpringApplication.run(K8sDemoApplication.class, args);UserService user = run.getBean(UserService.class);//生效user.start();//失效// user.stop();

测试发现如果直接调用start 方法是会生效的
通过stop()方法里面调用start 方法是会失效的

分析

首先我们知道如果要在一个方法前后加一些todo ,有两种方法,一种是硬code
还有一种是通过动态代理的方法,这里通过注解的方法,实际底层是通过cglib这种代理实现的,默认应该是jdk动态代理的,但是我用arthas分析实际是用cglib这种形式,这个不重要。

为啥通过代理的,两种不同的调用方式会有区别呢

直接调用为啥是可以的,因为实际上的调用对象是生成的动态代理对象,在方法上进行代理的。


我们重点了解下为啥间接调用失败。
看下编译后的代码

@Service
public class UserServiceImpl implements UserService {public UserServiceImpl() {}public void start() {throw new RuntimeException();}public void stop() {//实际上调用start,我们可以发现是通过this 对是本身这个对象直接调用的this.start();}
}

总结

加深了对之前glibc动态代理的理解

相关文章:

spring aop 内部引用失效分析

背景 用了spring retry 发现在有些场景下失效,也让我想起了之前看spring 事务时会有一些场景下失效的这个问题 代码 接口public interface UserService {public void start() ;public void stop(); }实现类 Service public class UserServiceImpl implements User…...

IEDA常用快捷键(后续更新ing)

1. 快速生成语句 1.快速生成main()方法 psvm或者main回车 2.快速生成输出语句 sout,回车 3.快速生成for循环 fori或者itar,回车 2.快捷键 含义操作查找文本CtrlF替换文本CtrlR单行注释Ctrl/多行注释CtrlShift/格式化CtrlAltL复制当前内容至下一行CtrlD补全代码Alt/快速生成…...

Day03—flask与react实现交互(解决跨域问题)

flask :默认的端口为 http://127.0.0.1:5000 react :默认端口为 http://localhost:3000 两个项目运行起来之后,没有实现前后端交互调用 弄了半天,是因为没有给flask 配置跨域 解决办法: pip install flask-cors from …...

JavaScript中的闭包

闭包 闭包是什么 内部函数(嵌套函数)能够访问其外部函数(父函数)的变量,即使外部函数执行完毕后,这些变量仍会保留在内存中,因为内部函数保持着对它们的引用,从而防止了垃圾回收机制回收这些变量。闭包是函数与其词法环境(包括外…...

python画图:matpolt,设置图片尺寸,字体大小,副坐标轴,保存

文章重心: 写论文的时候,图片的大小,字体的大小,副坐标轴,这些都是很重要的因素,保存一下之前用过的画图代码单图多图(两个子图)堆叠柱状图两个Y轴的图问题: python保存的时候,我选择的是svg,但是这样图片会比较大,查重什么的需要把图片都删了(一般有文件大小限制…...

如果突然失业,靠这个项目也能养活自己,6天收入3K

在前两天,我与两位好友相约外出就餐。当时正值雨天,我们便选择了一家大排档,边品尝美食边畅谈人生。聊得尽兴,直到凌晨一点多才回到家中。其中一位朋友最近刚刚遭遇裁员,为了寻找新的工作机会,他已经经历了…...

【OpenCV 基础知识 13】高斯平滑处理图像

函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvLaplace相似)…...

web安全渗透测试工具篇(二):sqlmap常用命令和nmap常用命令

web安全渗透测试工具篇 1. web安全渗透测试-工具使用-sqlmap1.1 SQLMap 的详细使用1.1.1 SQLMap 支持五种不同的注入模式1.2.SQLmap的模块划分1.2.1.Target目标1.2.2.Request请求1.2.3.Optimization(优化):1.2.4.Injection(注入):1.2.5.Detection(检测):1.2.6.Techniques…...

STM32 USART的字符编码(发送器的实现逻辑)

目录 概述 1 字符编码 1.1 USART 字符说明 1.2 字长编程 2 发送器 2.1 字符发送 2.2 可配置的停止位 2.3 配置停止位方法 3 单字节通信 4 中断字符 5 空闲字符 概述 本文主要讲述STM32 USART的发送端功能实现的原理,包括字节编码长度,发送器…...

[市赛2024-X2]自习室

Description 临近期末考试,自习室的学生来来往往。 这可忙坏了管理自习室的大爷,他随时准备开关灯。 自习室只要有学生来,就需要开灯。一开始没有学生来之前灯是关闭的。 周日这一天共有 n 位同学来自习,第 i 个同学将在时间 …...

Spring ----> IOC

文章目录 一、 Spring 是一个包含众多工具的IoC容器二、 什么是IOC以及好处三、 如何实现loc思想四、Spring提供的实现loC的方法 --- 类注解方法注解4.1 类注解类注解概念介绍类注解的使用 4.2 方法注解Bean 一、 Spring 是一个包含众多工具的IoC容器 场景解析:首先…...

AI重塑保险业未来:机器学习在风险评估、欺诈检测与客户服务中的深度应用

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...

某某某加固系统分析

某某某加固系统内核so dump和修复: 某某某加固系统采取了内外两层native代码模式,外层主要为了保护内层核心代码,从分析来看外层模块主要用来反调试,释放内层模块,维护内存模块的某些运行环境达到防止分离内外模块&am…...

嵌入式之音频基础知识

声音特性 1、响度:人主观上感觉声音的大小(俗称音量),由“振幅”和人离声源的距离决定,振幅越大响度越大,人和声源的距离越小,响度越大; 2、音调:声音的高低&#xff0…...

如何做好软件项目的沟通管理

如何做好软件项目的沟通管理 软件项目的沟通管理是确保项目信息在团队成员、利益相关者和相关群体之间有效流通的过程。良好的沟通是项目成功的关键,在项目开始时,需要制定详细的沟通计划,包括沟通的目的、对象、内容、频率和渠道等信息。 …...

linmux

了了了了了了了了了了了了了了...

Vue3学习-vue-router之路由传参

传参方案一&#xff1a;RouterLink 字符串 //传值 <RouterLink to"/page?a1&b2">{{ RouterLink 字符串传参 }}</RouterLink> //取值 import { toRefs } from vue import { useRoute } from vue-router const { query} toRefs(useRoute()) console.…...

ubuntu20.04 10分钟搭建无延迟大疆无人机多线程流媒体服务器

1.使用效果 无人机画面 2.服务器视频端口 3.使用教程 3.1.下载ubuntu对应软件包&#xff1a;系统要求ubuntu16以上 3.2修改端口&#xff08;config.xml文件&#xff09; 3.3启动服务 目录下输入&#xff1a;终端启动&#xff1a;./smart_rtmpd 后台启动&#xff1a;nohup ./…...

hugging face笔记:PEFT

1 介绍 PEFT (Parameter-Efficient Fine Tuning) 方法在微调时冻结预训练模型参数&#xff0c;并在其上添加少量可训练的参数&#xff08;称为适配器&#xff09;这些适配器被训练用来学习特定任务的信息。这种方法已被证明在内存效率和计算使用上非常高效&#xff0c;同时能产…...

作业5.26

定义一些常量和数据结构来存储用户信息和消息。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define MAX_USERS 100 // 最大用户数 #define MAX_M…...

Qwen2.5-7B-Instruct镜像免配置:5分钟完成7B模型本地对话服务

Qwen2.5-7B-Instruct镜像免配置&#xff1a;5分钟完成7B模型本地对话服务 想体验7B大模型的强大推理能力&#xff0c;又担心复杂的部署流程和显存爆炸&#xff1f;今天&#xff0c;我们带来一个开箱即用的解决方案。基于阿里通义千问官方旗舰版Qwen2.5-7B-Instruct模型&#x…...

OpenClaw技能市场指南:为千问3.5-9B寻找合适的功能扩展

OpenClaw技能市场指南&#xff1a;为千问3.5-9B寻找合适的功能扩展 1. 为什么需要技能市场 当我第一次在本地部署完OpenClaw并成功接入千问3.5-9B模型时&#xff0c;发现这个组合虽然能完成基础的对话和简单任务&#xff0c;但面对实际工作场景中的复杂需求时总显得力不从心。…...

NEURAL MASK 与 Vue.js 打造交互式图像重构效果演示平台

NEURAL MASK 与 Vue.js 打造交互式图像重构效果演示平台 你有没有想过&#xff0c;一个强大的图像处理算法&#xff0c;如果只能通过命令行或者复杂的脚本调用&#xff0c;那它的价值是不是被大大限制了&#xff1f;对于很多开发者或者研究者来说&#xff0c;他们可能更希望有…...

WiiChuk_compat:高兼容Nunchuk驱动库详解

1. WiiChuk_compat 库概述WiiChuk_compat 是一个专为嵌入式平台设计的开源 Arduino 兼容库&#xff0c;其核心目标是实现对任天堂 Wii 遥控器扩展配件——Nunchuk&#xff08;常被误拼为 “Numchuck”、“Nunchuck” 或 “Nunchuk”&#xff09;的高可靠性、宽兼容性 IC 接口驱…...

原生Android工程与Unity互相调用

原生Android工程与Unity互相调用教程&#xff0c;包含代码实现和注意事项。以下是详细步骤&#xff1a;一、Unity调用Android原生方法1. Android端准备在Android Studio中创建原生模块&#xff1a;// MyNativePlugin.java package com.example.unityplugin;import android.util…...

Js2Py错误处理与调试:解决常见问题的终极指南

Js2Py错误处理与调试&#xff1a;解决常见问题的终极指南 【免费下载链接】Js2Py JavaScript to Python Translator & JavaScript interpreter written in 100% pure Python&#x1f680; Try it online: 项目地址: https://gitcode.com/gh_mirrors/js/Js2Py Js2Py是…...

HJ169 灵异背包?

题目题解(36)讨论(22)排行 简单 通过率&#xff1a;43.17% 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 知识点贪心 校招时部分企业笔试将禁止编程题跳出页面&#xff0c;为提前适应&#xff0c;练习时请使用在线自测&#xff0c;而非本地IDE。 描述 给定 nn 个正…...

BGE-M3移动端部署:Android/iOS调用BGE-M3嵌入服务SDK封装

BGE-M3移动端部署&#xff1a;Android/iOS调用BGE-M3嵌入服务SDK封装 1. 项目背景与价值 BGE-M3是一个专门为检索场景设计的三合一"多功能"文本嵌入模型。它集成了密集检索、稀疏检索和多向量检索三种模式&#xff0c;能够在不同场景下提供最优的文本相似度计算能力…...

可口可乐在美国250周年庆活动中唱响“我想给美国买瓶可乐”

可口可乐公司正式启动一项为期一年的全国性营销活动&#xff0c;以配合其与“美国250周年委员会&#xff08;America250&#xff09;”的合作伙伴关系。该委员会是负责筹备美国建国250周年庆典的非营利组织。 活动核心是一支三分钟的赞歌式视频《畅饮美国&#xff08;Drink In…...

从零构建可审计、可回滚、可监控的向量检索服务:EF Core 10架构设计图+DDD分层实践(含GitHub可运行Demo)

第一章&#xff1a;EF Core 10向量检索服务的核心定位与演进背景EF Core 10首次将原生向量检索能力深度集成至ORM层&#xff0c;标志着.NET数据访问技术从传统关系型查询迈向语义化、多模态检索的新阶段。这一演进并非孤立功能叠加&#xff0c;而是响应大语言模型应用爆发、RAG…...