日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?

發布時間:2025/3/19 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AOP(Aspect Orient Programming),它是面向對象編程的一種補充,主要應用于處理一些具有橫切性質的系統級服務,如日志收集、事務管理、安全檢查、緩存、對象池管理等。

AOP實現的關鍵就在于AOP框架自動創建的AOP代理,AOP代理則可分為靜態代理和動態代理兩大類,其中靜態代理是指使用AOP框架提供的命令進行編譯,從而在編譯階段就可生成 AOP 代理類,因此也稱為編譯時增強;而動態代理則在運行時借助于JDK動態代理、CGLIB等在內存中“臨時”生成AOP動態代理類,因此也被稱為運行時增強。

面向切面的編程(AOP) 是一種編程范式,旨在通過允許橫切關注點的分離,提高模塊化。AOP提供切面來將跨越對象關注點模塊化。

AOP要實現的是在我們寫的代碼的基礎上進行一定的包裝,如在方法執行前、或執行后、或是在執行中出現異常后這些地方進行攔截處理或叫做增強處理

Aop的概念

Pointcut:是一個(組)基于正則表達式的表達式,有點繞,就是說他本身是一個表達式,但是他是基于正則語法的。通常一個pointcut,會選取程序中的某些我們感興趣的執行點,或者說是程序執行點的集合。

JoinPoint:通過pointcut選取出來的集合中的具體的一個執行點,我們就叫JoinPoint.

Advice:在選取出來的JoinPoint上要執行的操作、邏輯。關于5種類型,我不多說,不懂的同學自己補基礎。

Aspect:就是我們關注點的模塊化。這個關注點可能會橫切多個對象和模塊,事務管理是橫切關注點的很好的例子。它是一個抽象的概念,從軟件的角度來說是指在應用程序不同模塊中的某一個領域或方面。又pointcut 和advice組成。

Weaving:把切面應用到目標對象來創建新的 advised 對象的過程。

AspectJ是什么?能做什么?

AspectJ是一個易用的功能強大的AOP框架

AspectJ全稱是Eclipse AspectJ, 其官網地址是:http://www.eclipse.org/aspectj/ ,目前最新版本為:1.9.0

引用官網描述:

a seamless aspect-oriented extension to the Javatm programming language(一種基于Java平臺的面向切面編程的語言)

Java platform compatible(兼容Java平臺,可以無縫擴展)

easy to learn and use(易學易用)

可以單獨使用,也可以整合到其它框架中。

單獨使用AspectJ時需要使用專門的編譯器ajc。

java的編譯器是javac,AspectJ的編譯器是ajc,aj是首字母縮寫,c即compiler。

AspectJ和Spring AOP的區別?

相信作為Java開發者我們都很熟悉Spring這個框架,在spring框架中有一個主要的功能就是AOP,提到AOP就往往會想到AspectJ,下面我對AspectJ和Spring AOP作一個簡單的比較:

Spring AOP

1、基于動態代理來實現,默認如果使用接口的,用JDK提供的動態代理實現,如果是方法則使用CGLIB實現

2、Spring AOP需要依賴IOC容器來管理,并且只能作用于Spring容器,使用純Java代碼實現

3、在性能上,由于Spring AOP是基于動態代理來實現的,在容器啟動時需要生成代理實例,在方法調用上也會增加棧的深度,使得Spring AOP的性能不如AspectJ的那么好

AspectJ

AspectJ來自于Eclipse基金會

AspectJ屬于靜態織入,通過修改代碼來實現,有如下幾個織入的時機:

? 1、編譯期織入(Compile-time weaving): 如類 A 使用 AspectJ 添加了一個屬性,類 B 引用了它,這個場景就需要編譯期的時候就進行織入,否則沒法編譯類 B。

? 2、編譯后織入(Post-compile weaving): 也就是已經生成了 .class 文件,或已經打成 jar 包了,這種情況我們需要增強處理的話,就要用到編譯后織入。

?

3、類加載后織入(Load-time weaving):

指的是在加載類的時候進行織入,要實現這個時期的織入,有幾種常見的方法。1、自定義類加載器來干這個,這個應該是最容易想到的辦法,在被織入類加載到

JVM 前去對它進行加載,這樣就可以在加載的時候定義行為了。2、在 JVM 啟動的時候指定 AspectJ 提供的 agent:-javaagent:xxx/xxx/aspectjweaver.jar。

AspectJ可以做Spring AOP干不了的事情,它是AOP編程的完全解決方案,Spring AOP則致力于解決企業級開發中最普遍的AOP(方法織入)。而不是成為像AspectJ一樣的AOP方案

因為AspectJ在實際運行之前就完成了織入,所以說它生成的類是沒有額外運行時開銷的

對比總結

下表總結了 Spring AOP 和 AspectJ 之間的關鍵區別:

轉載原路徑:https://zhuanlan.zhihu.com/p/113256693

本次轉載只為學習,如有侵犯請通知刪除!!!

總結

以上是生活随笔為你收集整理的aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲av综合色区无码一二三区 | 精品第一页 | 亚洲区精品 | 亚洲资源网站 | 日韩av一二三 | 国产成人精品久久二区二区91 | 粉嫩av网址 | 青青草97国产精品免费观看 | 久久久久成人精品免费播放动漫 | 成人久久久精品乱码一区二区三区 | 国产美女明星三级做爰 | 天天天天天天操 | 婷婷丁香一区二区三区 | 国产精品夜夜夜爽张柏芝 | 中文字幕在线观看你懂的 | 永久免费不卡在线观看黄网站 | 亚洲AV无码成人国产精品色 | 精品一区不卡 | 国产网站在线看 | 日日射日日操 | 人妻精品一区一区三区蜜桃91 | 精品国产一区二区三区久久久蜜月 | 一道本在线观看视频 | 久久久久这里只有精品 | 日本人性爱视频 | ,午夜性刺激免费看视频 | 九九激情视频 | 欧美日韩亚洲视频 | 国产精品综合久久久 | 一区二区三区高清在线 | 葵司有码中文字幕二三区 | 不卡av一区二区 | 村上里沙番号 | 欧美一区二区三区影院 | 国产成人精品影视 | www.色啪啪.com | 成人国产欧美 | 成人av在线一区二区 | 成人午夜电影网站 | 国产床上视频 | 蜜桃视频黄色 | h在线免费观看 | 久久在线视频免费观看 | 国内自拍av | 国产91清纯白嫩初高中在线观看 | 亚洲丝袜在线视频 | 美攻壮受大胸奶汁(高h) | 中文字幕电影av | 一本加勒比北条麻妃 | 99热精品在线观看 | 中国黄色录像 | 潘金莲一级淫片免费放动漫 | 性xxx法国hd极品 | 91av官网 | av福利在线 | 黄色a视频 | 久久久久久久久91 | 日韩精品视频播放 | 秋霞福利 | 国产成人在线免费 | 99久久久无码国产精品性波多 | 亚洲一区欧美激情 | 色呦呦免费 | 性高湖久久久久久久久免费 | 成人综合网站 | 国内毛片毛片毛片毛片毛片 | 精品综合在线 | 欧美视频精品在线 | 亚洲国产综合久久 | 欧美日韩另类在线 | 五级黄高潮片90分钟视频 | 性做久久久久久久免费看 | 欧美大片91 | 国产午夜精品免费一区二区三区视频 | 免费亚洲一区 | 99在线精品免费视频 | 精品午夜一区二区三区在线观看 | 亚洲综合色在线观看 | 国产视频h | 精品国产www| 老鸭窝视频在线观看 | 日韩欧美日韩 | 亚洲无码久久久久久久 | 丝袜 亚洲 另类 国产 制服 | 在线观看av资源 | 成人免费做受小说 | 大香蕉视频一区二区 | 日免费视频 | 日日狠狠 | 午夜网址 | 99精品国自产在线 | 一区二区在线视频播放 | 欧美老肥妇做爰bbww | 日韩电影精品 | 91精品国产一区二区三区香蕉 | 久久精品无码毛片 | 午夜毛片视频 | 色偷偷五月天 | 免费看欧美成人a片无码 |