电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring aop 如何通過獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換

瀏覽:50日期:2023-06-30 16:50:00
Spring aop 獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換

在項(xiàng)目中,涉及到同一個(gè)類中一個(gè)方法調(diào)用另外一個(gè)方法,并且兩個(gè)方法的事務(wù)不相關(guān),

這里面涉及到一個(gè)事務(wù)切換的問題,一般的方法沒問題,根據(jù)通過aop注解在方法上通過加注解標(biāo)識(shí),

答案是:

通過spring aop類里面的AopContext類獲取當(dāng)前類的代理對(duì)象,

這樣就能切換對(duì)應(yīng)的事務(wù)管理器了,具體做法如下:

(1).在applicationContext.xml文件中配置如下:

<!-- 開啟暴露Aop代理到ThreadLocal支持 --> <aop:aspectj-autoproxy expose-proxy='true'/> (2).在需要切換的地方獲取代理對(duì)象,

再調(diào)用對(duì)應(yīng)的方法,如下:

((類名) AopContext.currentProxy()).方法(); (3).注意

這里需要被代理對(duì)象使用的方法必須是public類型的方法,不然獲取不到代理對(duì)象,會(huì)報(bào)下面的錯(cuò)誤:

java.lang.IllegalStateException: Cannot find current proxy: Set ’exposeProxy’ property on Advised to ’true’ to make it available.

開啟暴露AOP代理即可.

因?yàn)殚_啟事務(wù)和事務(wù)回滾,實(shí)際這個(gè)過程是aop代理幫忙完成的,當(dāng)調(diào)用一個(gè)方法時(shí),它會(huì)先檢查時(shí)候有事務(wù),有則開啟事務(wù),

當(dāng)調(diào)用本類的方法是,它并沒有將其視為proxy調(diào)用,而是方法的直接調(diào)用,所以也就沒有檢查該方法是否含有事務(wù)這個(gè)過程,

那么本地方法調(diào)用的事務(wù)也就無(wú)效了。

獲取代理bean的原始對(duì)象

public class AopTargetUtil { /** * 獲取 目標(biāo)對(duì)象 * @param proxy 代理對(duì)象 * @return * @throws Exception */ public static Object getTarget(Object proxy) throws Exception { if(!AopUtils.isAopProxy(proxy)) { return proxy;//不是代理對(duì)象 } if(AopUtils.isJdkDynamicProxy(proxy)) { return getJdkDynamicProxyTargetObject(proxy); } else { //cglib return getCglibProxyTargetObject(proxy); } } private static Object getCglibProxyTargetObject(Object proxy) throws Exception { Field h = proxy.getClass().getDeclaredField('CGLIB$CALLBACK_0'); h.setAccessible(true); Object dynamicAdvisedInterceptor = h.get(proxy); Field advised = dynamicAdvisedInterceptor.getClass().getDeclaredField('advised'); advised.setAccessible(true); Object target = ((AdvisedSupport)advised.get(dynamicAdvisedInterceptor)).getTargetSource().getTarget(); return target; } private static Object getJdkDynamicProxyTargetObject(Object proxy) throws Exception { Field h = proxy.getClass().getSuperclass().getDeclaredField('h'); h.setAccessible(true); AopProxy aopProxy = (AopProxy) h.get(proxy); Field advised = aopProxy.getClass().getDeclaredField('advised'); advised.setAccessible(true); Object target = ((AdvisedSupport)advised.get(aopProxy)).getTargetSource().getTarget(); return target; }}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: hc22_hc22价格_hc22哈氏合金—东锜特殊钢 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 耐驰泵阀管件制造-耐驰泵阀科技(天津)有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 必胜高考网_全国高考备考和志愿填报信息平台| 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 压力变送器-上海武锐自动化设备有限公司| 昊宇水工|河北昊宇水工机械工程有限公司| 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 智慧消防-消防物联网系统云平台| 上海深蓝_缠绕机_缠膜机-上海深蓝机械装备有限公司 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 书信之家_书信标准模板范文大全 最新范文网_实用的精品范文美文网 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | Duoguan 夺冠集团| 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 |