类的方法内调用如何让切面生效?以及一些new对象如何调用注入的单例对象?

spring调用切面失效分析(类内调用自身切面方法或其他切面方法失效) spring调用切面失效分析(类内调用自身切面方法或其他切面方法失效)简述示例代码说明通过配置文件生成不同模式的客户端利用动态代理动态指定不同模式的客户端执行jedisCommand利用依赖注入以及Proxy动态生成JedisCommand接口的实现类 简述 此篇文章利用一个简单的示例代码,说明为什么类内调用自身切面方法或其他切面方法失效,并且简单的阐述了切面原理。 示例代码说明 本示例代码 通过... 阅读详情

一些编程上的小技巧。

1. 方法内调用如何让切面生效?

我们知道一个切面作用在整个类的外围。如果类的内部方法相互调用如何让缓存生效呢?这里可以使用的一个小技巧是通过将当前类的代理类注入当前类中,在使用的时候即可使用生成的代理类了。如下:

@Service
class DemoService {


    @Autowired
    DemoService  proxy;


   @Cachable(value="cache")
   public String get(String arg) {
       return "hello" + arg;
   }
 
   public String process(String arg) {
   
       String result = proxy.get(arg);
       return "hi," + result;
   } 

}

2. 在我们的对象中经常new对象 如果new出的对象一直传递一个单例对象会很不优雅。通过单例模式 利用好注入的单例。


/**
 *
 *实现方式 一种是继承InitializingBean 接口 设置一下
 * 另外一种方法可以使用 @PostConstruct 注解
 *
 *
 */
@Service
class DemoService {

   

   private static DemoService instance;

   public static DemoService getInstance() {
       return instance;
   }
}

 

spring切面注解失效 在项目中使用切面注解做数据脱敏时,导出的数据也需要脱敏处理,遇到了在一个类里面调用本类的方法切面失效,解决方法如下: 切面注解: package com.t3.ts.driver.resume.aspect; import java.lang.annotation.*; /** * @Description: 数据脱敏注解 Filed * @Date: 2019/9/10 * @A... 阅读详情

相关推荐

MIT6.824-lab2D-2022(日志压缩详细讲解)

从paper中去讲解,并实现关于lab2D的代码。

幸平的博客 6037

成员内部类

成员内部类 成员内部类的定义位置 在类中方法,跟成员变量是一个位置 外界创建成员内部类格式 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象; 举例:Outer.Inner oi = new Outer().new Inner(); 成员内部类的推荐使用方案 将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一...

熊猫拿铁 137

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3197

如何解决调用内部方法切面不起作用的问题?

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 首先,在切面类中设置:@EnableAspectJAutoProxy(exposeProxy = true, proxyTargetClass = true) @Aspect @Component @EnableAspectJAutoProxy(exposeProxy = true, proxyTargetClass = true) public class AspectConfig {} 然后,调用哪个内部方法.

我的博客 2180

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 571

基于物联网技术设计的微型消防小车控制系统(STM32+ESP8266局域网)(181)

基于物联网技术的小微型消防车控制系统。通过远程控制功能,用户能够灵活操作消防车的行驶,方便快速抵达火灾现场。环境感知功能实时采集烟雾浓度、温湿度信息,为灭火决策提供科学依据。火源定位功能采用自动和手动两种模式,准确迅速地定位火源,并通过报警提示用户。灭火功能则根据火源定位结果,自动或手动启动干粉灭火器进行高效灭火。这些功能的结合实现了对小型火灾的全面应对,提升了消防效率与安全性,减少了火灾带来的损失。通过本项目的设计与实现,为消防领域提供了一种创新且实用的解决方案。

3081

Java内部方法调用怎么切面,Spring AOP,怎么获得切面的调用者?

经过和题主评论询问,才总算把这个问题真正展示出来了,不然的话,大家都会围绕这foobar的切面去想而你的问题或者说你现在实现的一个新业务,最重要的地方其实应该是:如何处理调用foobar的方法也就是说,你这个新业务其实就是处理某些调用foobar的方法的定制化,而直接分析一下就可以发现你这个新业务中需要处理或者像你说的加注解的方法它们唯一相同点是内部调用了foobar。所以它们既是分散的,但是内部...

weixin_28972665的博客 1204

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

Spring AOP为什么不能拦截同一个对象内方法的嵌套调用(一)

在开发基于 Spring 的应用的过程中碰到了一个让我困惑了好久的问题,我在一个 Service 类的 doSomething1() 方法中通过this.doSomething2(); 语句调用了同一个类中的 doSomething2 方法,运行时通过调试发现 doSomething1 方法的执行前后正常地执行了自定义的 around 装备,但是在 doSomething2 方法执行前后并未如我所

konglong_king的专栏 3531

华为OD机考 新系统真题 【区分奇偶的数组排序】

华为OD机试 新系统真题【区分奇偶的数组排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【区分奇偶的数组排序】多语言题解。

qq_45776114的博客 514

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2489

spring事务@Transactional在同一个类中的方法调用不生效

参考: https://www.jianshu.com/p/2e4e1007edf2 https://blog.youkuaiyun.com/ligeforrent/article/details/79996797 问题 也可以描述为 同一个类中,只有方法加了 @Transactional 事务为什么不生效? 类上加事务,方法不加事务,事务是生效的! 类上加事务,方法也加事务,事务是生效的!   ...

改变ing 2万+

将物理信息神经网络(PINN)应用于微通道湍流的拓扑优化,并结合COMSOL数据进行训练与快速预测

本文提出一种基于物理信息神经网络(PINN)的微通道散热器流场快速预测方法。通过有限组COMSOL仿真数据训练神经网络,结合Navier-Stokes方程和能量方程作为物理约束,构建可快速预测新拓扑结构下速度场和温度场的替代模型。该方法包含数据准备、网络构建、损失函数设计等关键步骤,利用自动微分计算方程残差,显著降低传统CFD优化的计算成本,实现秒级/分钟级的流场预测,为微通道散热器拓扑优化提供高效解决方案。

huanghm88的专栏 536

Spring 的@Transactional或者切面不生效的坑

Spring的声明式事务和切面都是通过aop进行动态代理实现的 所以直接通过this来调用方法的话,将不会触发事务和切面 示例 package com.oneconnect.sg.service.impl; @Service public class UserManagerServiceImpl implements UserManagerService { @Override ...

ZMPRESS 1360

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

@Transactional注解失效:Spring AOP为什么调用本类切面方法没有生效

@Transactional注解失效:Spring AOP为什么调用本类切面方法没有生效 AOP 的实现原理是,通过动态代理生成一个新的代理类(因为是运行时生成,所以称为动态),再通过代理类来调用目标方法,并在调用前或调用后添加操作。 JDK 动态代理需要通过接口类;CGlib动态代理不需要目标实现接口; 动态代理的实现类似于: @Service public class A { @Transactional public void a(){ b(); c

howeres的博客 1425

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

事物A调用事物B方法事物会生效不 不生效怎么才能生效

当方法 A(带事务)调用方法 B(带事务)时,事务是否生效取决于事务传播行为(Propagation) 的配置。Spring 定义了 7 种传播行为,核心场景如下:传播行为说明A 调用 B 时的事务表现(默认)若当前存在事务则加入,否则新建。B 共享 A 的事务,异常时整体回滚。新建事务,挂起当前事务(若存在)。B 独立事务,A 与 B 事务相互隔离,异常互不影响。若当前有事务则加入,否则以非事务方式执行。B 随 A 的事务存在而存在,否则无事务。以非事务方式执行,挂起当前事务(若存在)。B 始终无事务,A

longgelaile的博客 1120

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring 事务管理:为什么内部方法调用事务不生效以及如何解决

摘要: Spring事务管理基于AOP代理机制,通过@Transactional注解实现。当同一类中的方法A调用方法B(均带事务注解)时,事务可能失效,因为内部调用未经过代理对象。解决方法:1)将方法B拆分到另一个类,通过依赖注入调用以触发代理;2)调整事务传播行为(仅对外部调用有效)。关键点在于Spring事务仅对代理对象的外部调用生效,内部直接调用会绕过代理导致事务失效。

Knight 866

springboot内部方法调用,aop切面失效

场景描述 有一个控制层类OutStoreOverController(简称controller),依赖了XsCustomorExpenseOperateServiceImpl(简称service)类。controller在2个不同方法中分别调用了service的siteDeliverySettlement和stockDownAccounts方法(分别简称为m1和m2)。m1和m2在具体实现的时候又...

小白博客 1万+

bytebuddy解决spring AOP切面同一个类嵌套方法不生效问题

bytebuddy解决spring AOP切面同一个类嵌套方法不生效问题     sping AOP切面注解使用中的坑中详细介绍了spring AOP切面注解的同一个类嵌套方法不生效问题和产生的原因,这篇实际是为了完美的解决打印方法运行时间的问题。     bytebuddy是字节码生成库,可以生成和操作java的字节......

nod 6397

同一个类中A方法,调用带有自定义注解的B方法,注解不生效

在您描述的场景中:服务类包含A()和B()两个方法B()方法上有自定义注解(假设该注解已被切面配置识别)这种情况下: ✅。

MoneyZHC的博客 791

new不能执行autowired_new出来的对象无法调用@Autowired注入的Spring Bean

@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注入的Bean。1、类1,加入Spring Poolpublic class PersonServiceImpl implements PersonService{public void save(){System.ou...

weixin_39867662的博客 575

java 一个无事物方法,调用另外一个有事物方法,事物回生效吗

/ 直接调用,事务不生效(如果通过 this 调用)System.out.println("现在是非事务方法升级为事务方法");System.out.println("非事务方法调用事务方法");System.out.println("非事务方法调用事务方法");System.out.println("非事务方法调用事务方法");System.out.println("执行事务方法");System.out.println("执行事务方法");System.out.println("执行事务方法");

C18298182575的博客 1230

new不能执行autowired_@Autowired 注入对自己new的对象无效,相当于对象没用spring管理...

定义了一个接口实现类UserServiceImpl,并在控制类中用UserService userService=new UserServiceImpl(); 创建实现类的对象,调用实现类的方法userService.queryById(id),执行到jpaQueryFactory这句时会报空指针错误。代码如下实现类:import ...@Service("userService")public ...

weixin_39609822的博客 737

@Transactional方法内调用失效但加在类上能够生效

首先说一下方法内调用失败的问题,这个网上很多说明,大概说一下: @Transactional用于开启事务,可以加在方法上或者类上,当加在方法上时,方法内部调用会由于不经过代理类而造成事物失效,如下: Class A { public vode m1(){ m2(); } @Transactional public vode m2(){ } } 上面的m2()是无法开启事...

Mutou_ren的博客 2856

同一个类中无事务方法调用同一个类的有事务方法问题原因及其解决方法

无事务a()方法中调用同一个类的有事务b()方法问题原因及其解决方法 在Spring管理的项目中,方法B使用了Transactional注解,试图实现事务性。但当同一个class中的方法A调用方法B时,会发现方法B中的异常不再导致回滚,也即事务失效了。 当这个方法被同一个类调用的时候,spring无法将这个方法加到事务管理中。 public class UserService extends Ba...

liuguang212的博客 3822
上一篇: 面试题 两个线程间隔打印1,2,3,4,5,6,7,8....100 一个线程打印奇数,一个线程打印偶数
下一篇: 【UML和模式应用】第一部分 初始阶段 学习笔记
半盏屠苏
博客等级 码龄12年 0粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值