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

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

Spring AOP注解案例及基本原理詳解

瀏覽:4日期:2023-08-31 08:05:42

切面:Aspect

切面=切入點+通知。在老的spring版本中通常用xml配置,現在通常是一個類帶上@Aspect注解。切面負責將 橫切邏輯(通知) 編織 到指定的連接點中。

目標對象:Target

將要被增強的對象。

連接點:JoinPoint

可以被攔截到的程序執行點,在spring中就是類中的方法。

切入點:PointCut

需要執行攔截的方法,也就是具體實施了橫切邏輯的方法。切入點的規則在spring中通過AspectJ pointcut expression language來描述。

切入點與連接點的區別:連接點是所有可以被'切'的點;切入點是真正要切的點。

通知:Advice

針對切入點的橫切邏輯,包含“around”、“before”和“after”等不同類型的通知。

通知的作用點如其命名:

before:在切入點之前執行 after:在切入點之后執行 around:在切入點攔截方法,自定義前后,更靈活

還有一些異常處理的通知,這里不一一舉例

織入:Weaving

將切面和目標對象連接起來,創建代理對象的過程。spring中用的是動態代理。假如目標對象有接口,使用jdk動態代理;否則使用cglib動態代理。

說了這么多概念,看看代碼實現可能會使讀者理解的更深刻一些,這里簡單寫一個通過注解增強方法的AOP-Demo。首先是切面類:

package com.example.demo.aop;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.stereotype.Component;/** * @author Fcb * @date 2020/6/20 * @description 切面類=切入點+通知 */@Aspect@Componentpublic class LogAspect { //這個方法定義了切入點 @Pointcut('@annotation(com.example.demo.aop.anno.MyLog)') public void pointCut() {} //這個方法定義了具體的通知 @After('pointCut()') public void recordRequestParam(JoinPoint joinPoint) { for (Object s : joinPoint.getArgs()) { //打印所有參數,實際中就是記錄日志了 System.out.println('after advice : ' + s); } } //這個方法定義了具體的通知 @Before('pointCut()') public void startRecord(JoinPoint joinPoint) { for (Object s : joinPoint.getArgs()) { //打印所有參數 System.out.println('before advice : ' + s); } } //這個方法定義了具體的通知 @Around('pointCut()') public Object aroundRecord(ProceedingJoinPoint pjp) throws Throwable { for (Object s : pjp.getArgs()) { //打印所有參數 System.out.println('around advice : ' + s); } return pjp.proceed(); }}

注解:

package com.example.demo.aop.anno;import java.lang.annotation.*;/** * @author Fcb * @date 2020/6/20 * @description */@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD, ElementType.TYPE})public @interface MyLog {}

目標類:

package com.example.demo.aop.target;import com.example.demo.aop.anno.MyLog;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;/** * @author Fcb * @date 2020/6/20 * @description */@RestControllerpublic class MockController { @RequestMapping('/hello') @MyLog public String helloAop(@RequestParam String key) { System.out.println('do something...'); return 'hello world'; }}

最后是測試類:

package com.example.demo.aop.target;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;/** * @author Fcb * @date 2020/6/20 * @description */@SpringBootTestclass MockControllerTest { @Autowired MockController mockController; @Test void helloAop() { mockController.helloAop('aop'); }}

控制臺結果:

around advice : aopbefore advice : aopdo something...after advice : aop

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 安徽集装箱厂-合肥国彩钢结构板房工程有限公司| 青岛成人高考_山东成考报名网 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 氟塑料磁力泵-不锈钢离心泵-耐腐蚀化工泵厂家「皖金泵阀」 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 工业洗衣机_工业洗涤设备_上海力净工业洗衣机厂家-洗涤设备首页 bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 杭州双螺杆挤出机-百科 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 软装设计-提供软装装饰和软装配饰及软装陈设的软装设计公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 |