更新時間:2021-05-25 來源:黑馬程序員 瀏覽量:
AOP的全稱是Aspect-Oriented Programming,即面向切面編程(也稱面向方面編程)。它是面向?qū)ο缶幊蹋∣OP)的一種補充,目前已成為一種比較成熟的編程方式。
在傳統(tǒng)的業(yè)務(wù)處理代碼中,通常都會進行事務(wù)處理、日志記錄等操作。雖然使用OOP可以通過組合或者繼承的方式來達到代碼的重用,但如果要實現(xiàn)某個功能(如日志記錄),同樣的代碼仍然會分散到各個方法中。這樣,如果想要關(guān)閉某個功能,或者對其進行修改,就必須要修改所有的相關(guān)方法。這不但增加了開發(fā)人員的工作量,而且提高了代碼的出錯率。
為了解決這一問題,AOP思想隨之產(chǎn)生。AOP采取橫向抽取機制,將分散在各個方法中的重復(fù)代碼提取出來,然后在程序編譯或運行時,再將這些提取出來的代碼應(yīng)用到需要執(zhí)行的地方。這種采用橫向抽取機制的方式,采用傳統(tǒng)的OOP思想顯然是無法辦到的,因為OOP只能實現(xiàn)父子關(guān)系的縱向的重用。雖然AOP是一種新的編程思想,但卻不是OOP的替代品,它只是OOP的延伸和補充。
在AOP思想中,類與切面的關(guān)系如圖1所示。
圖1 類與切面的關(guān)系
從圖1可以看出,通過Aspect(切面)分別在Class1和Class2的方法中加入了事務(wù)、日志、權(quán)限和異常等功能。
AOP的使用,使開發(fā)人員在編寫業(yè)務(wù)邏輯時可以專心于核心業(yè)務(wù),而不用過多的關(guān)注于其他業(yè)務(wù)邏輯的實現(xiàn),這不但提高了開發(fā)效率,而且增強了代碼的可維護性。
目前最流行的AOP框架有兩個,分別為Spring AOP和AspectJ。Spring AOP使用純Java實現(xiàn),不需要專門的編譯過程和類加載器,在運行期間通過代理方式向目標(biāo)類織入增強的代碼。AspectJ是一個基于Java語言的AOP框架,從Spring2.0開始,Spring AOP引入了對AspectJ的支持,AspectJ擴展了Java語言,提供了一個專門的編譯器,在編譯時提供橫向代碼的織入。
【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個工作日,就業(yè)率已達到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級均薪12k+
2025-09-19