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

您的位置:首頁技術文章
文章詳情頁

spring項目中切面及AOP的使用方法

瀏覽:6日期:2023-07-06 08:25:17
使用AOP的原因(AOP簡介)

我們知道,spring兩大核心,IOC(控制反轉)和AOP(切面),那為什么要使用AOP,AOP是什么呢,嚴格來說,AOP是一種編程規范,是一種編程思想,并非spring創造,AOP可以幫助我們在一定程度上從冗余的通用的業務邏輯中解脫出來,最明顯的,比如每個接口的請求,都要記錄日志,那這個操作如果每個地方都寫,就會很繁瑣,當然,記錄日志并不是唯一的用法

spring的AOP只能基于IOC來管理,它只能作用于spring容器的bean

并且,spring的AOP為的是解決企業開發中出現最普遍的方法織入,并不是為了像AspectJ那樣,成為一個完全的AOP使用解決方案

AOP的使用

開啟AOP支持

要使用AOP,首先要開啟AOP的支持

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>

啟動類添加 @EnableAspectJAutoProxy 注解

編寫切面類與測試方法

@Aspect@Componentpublic class MyAop { }

@RestControllerpublic class OneController { @GetMapping('/doCheck') public String doCheck (int age) {System.out.println('doCheck');if (age > 1) {throw new MyException(ExceptionEnu.SUCCESS);} else { throw new MyException(ExceptionEnu.FAILD);} } }

記得切面類交給spring管理哦~ @Component

編寫切面方法

@Before

這個注解的用法呢,就是說,在執行你要執行的東西之前,執行加了這個注解的方法

比如

@Before(value = 'execution (* own.study.web.OneController.*(..))') public void doAop( ) {System.out.println('before aop'); }

也就是說,如果我要調用 OneController 的方法,在調用到之前,會執行這個 doAop 方法

讓我們來測試一下

spring項目中切面及AOP的使用方法

@After

這個注解的用法,就是說,當你執行完你的方法之后,真的返回給調用方之前,執行加了這個注解的方法

比如

@After(value = 'execution (* own.study.web.OneController.*(..))') public void doAfter() {System.out.println('after aop'); }

讓我們來測試一下

spring項目中切面及AOP的使用方法

@AfterThrowing

見名知意,在發生異常后,執行加了此注解的方法

注意我上面寫的測試方法了嗎?我拋出了自定義的異常

讓我們測試一下

spring項目中切面及AOP的使用方法

@AfterReturning

這個注解的用法也是看名字就能猜到,執行完后,執行此方法

但是!這個執行完,指的是正常執行完,不拋出異常的那種,不信?我們來試試

spring項目中切面及AOP的使用方法

@Around

這個是最為強大的一個注解,環繞通知,方法執行前和執行后都會執行加了這個注解的方法

@Around(value = 'execution (* own.study.web.OneController.*(..))') public Object doAround (ProceedingJoinPoint point) throws Throwable {Gson gson = new Gson();System.out.println('進入AOP --->' + System.currentTimeMillis());System.out.println('方法名 = ' + point.getSignature().toShortString()); Object result = point.proceed(); System.out.println('響應參數為 = ' + gson.toJson(result));System.out.println('AOP完事了 --->' + System.currentTimeMillis());return result; }

@RestControllerpublic class OneController { @GetMapping('/doCheck') public Object doCheck (int age) throws InterruptedException {System.out.println('這個是controller的方法 --->' + System.currentTimeMillis());Thread.sleep(2000l);System.out.println('doCheck');return new MyRsp('1', 'success'); } }

spring項目中切面及AOP的使用方法

但是,注意!這個環繞通知不是萬能的,不是一定好,大家按需要使用,比如一個場景,當你的方法拋出了異常,這個環繞通知就不會再繼續執行

我們來實驗一下

改寫controller的方法

@RestControllerpublic class OneController { @GetMapping('/doCheck') public Object doCheck (int age) throws InterruptedException {System.out.println('這個是controller的方法 --->' + System.currentTimeMillis());Thread.sleep(2000l);System.out.println('doCheck');throw new MyException('1', 'success'); // return new MyRsp('1', 'success'); } }

spring項目中切面及AOP的使用方法

看,AOP后續的沒有被執行

以上就是spring的切面,AOP的使用的詳細內容,更多關于spring的切面,AOP的使用的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 精密模具加工制造 - 富东懿 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 北京公寓出租网-北京酒店式公寓出租平台 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 间甲酚,间甲酚厂家-山东祥东新材料| 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业| 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 标策网-专注公司商业知识服务、助力企业发展 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 捆扎机_气动捆扎机_钢带捆扎机-沈阳海鹞气动钢带捆扎机公司 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 酸度计_PH计_特斯拉计-西安云仪| 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 重庆中专|职高|技校招生-重庆中专招生网 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 |