雖然AOP不經(jīng)常討論,但它在Spring中被廣泛使用誉尖。也許是時候你熟悉AOP以及如何使它適合你。
對Spring AOP了解多少铸题?您是否在當前的Spring Boot項目中使用它铡恕?如果沒有,這是給你的丢间!
如今探熔,我看到很多項目都使用了Spring Boot和其他尖端框架中的所有最新技術(shù)。一方面烘挫,這聽起來很有希望诀艰,但另一方面,我經(jīng)骋看到開發(fā)人員沒有充分利用他們面前的技術(shù)其垄。
我認為這主要是因為大多數(shù)書籍和文檔過于學術(shù)化且難以理解。這就是我決定談談面向方面編程的原因卤橄。
什么是面向方面編程(AOP)绿满?
面向方面的編程是一種編程范式,試圖解決跨領(lǐng)域關(guān)注的問題窟扑。面向方面編程(AOP)通過提供考慮程序結(jié)構(gòu)的不同方式來補充面向?qū)ο缶幊蹋?strong>OOP)喇颁。
OOP中模塊化的關(guān)鍵單元是類; 而在AOP中,模塊化的單位是方面嚎货。
換句話說橘霎,它有助于我們將不同的必要重復代碼重構(gòu)為不同的模塊。這給了我們的好處殖属,我們可以在一個地方保持這些功能姐叁,而不是每次都寫下來。
這種方法將產(chǎn)生更易于維護的代碼忱辅,從而將業(yè)務邏輯從最混亂的因素中清除七蜘。我們將這些功能分為不同的方面。
一個方面是跨越多個類別的關(guān)注點的模塊化墙懂。統(tǒng)一日志記錄或事務管理就是一個很好的例子状原。
使用AOP簡化代碼
讓我們看看下面給出的代碼示例。
在這里什黑,您可以識別出幾個與業(yè)務邏輯本身無關(guān)的不同問題。我們應該把它們分成另一個地方柜与。從此以后,只剩下業(yè)務邏輯了嵌灰。
AOP如何大規(guī)模運作
如果您的系統(tǒng)包含多個不與AOP一起使用的包和類弄匕,例如跟蹤,事務和異常處理沽瞭,我們必須在每個類和每個方法中實現(xiàn)它們迁匠。
這導致兩個問題:
- 代碼糾結(jié): - 每個類和方法都包含跟蹤,事務和異常處理 - 甚至是業(yè)務邏輯驹溃。在糾結(jié)的代碼中城丧,通常很難看到方法中實際發(fā)生了什么。
- 代碼散布 - 事務等方面分散在整個代碼中豌鹤,而不是在系統(tǒng)的單個特定部分中實現(xiàn)亡哄。
使用AOP可以解決這些問題。因此布疙,AOP所做的是它需要所有事務代碼并將其置于事務方面蚊惯。然后,它將獲取所有跟蹤代碼并將其放入一個方面灵临。最后截型,異常處理被放入一個方面。
之后儒溉,業(yè)務邏輯和所有其他方面之間將會有一個清晰的分離菠劝。
跨領(lǐng)域的關(guān)切
AOP中的一個重要概念是 跨領(lǐng)域的問題。上面睁搭,我展示了一些跟蹤赶诊,異常處理和事務的例子,這些都是跨領(lǐng)域的問題园骆。有幾個類和方法必須實現(xiàn)它們舔痪。
在經(jīng)典的面向?qū)ο缶幊讨校鼈儾荒茉谝粋€地方實現(xiàn)锌唾,因此您將無法避免散射和代碼糾纏锄码。
面向方面的編程允許您在一個集中的位置實現(xiàn)橫切關(guān)注點。因此晌涕,如果您使用AOP滋捶,它的工作方式是您首先實現(xiàn)您的業(yè)務邏輯,然后為您的跨領(lǐng)域問題騎行余黎。
這樣重窟,您可以編寫基礎結(jié)構(gòu)并選擇是否要添加事務或記錄到代碼中。因此惧财,您可以創(chuàng)建自己的個性化自定義中間件巡扇。然后扭仁,使用Spring AOP將方面添加到應用程序中,以便在運行時實際執(zhí)行方面以及主線業(yè)務邏輯厅翔。
什么是春天AOP乖坠?
如果你查看我關(guān)于Spring框架的文章,你會發(fā)現(xiàn)它是Spring的核心構(gòu)建模塊之一刀闷。
它通過消除代碼糾纏和交叉問題熊泵,在我們的項目中支持面向方面的模塊化。將Spring AOP庫添加到我們的項目中甸昏,您可以開始獲得它包含的幾個不同工具的優(yōu)勢戈次。
這可以用于諸如 注釋,建議筒扒,連接點和切入點之類的工具。這些是圖書館最重要的基礎绊寻。
通常花墩,您使用AOP來實現(xiàn)使Spring框架更有用的企業(yè)功能。
AOP允許您準確定義要集成您定義的特定方面的位置澄步。因此冰蘑,您將獲得可配置的中間件。如果您想了解有關(guān)Spring AOP的更多信息村缸,請繼續(xù)關(guān)注即將發(fā)表的文章或訪問此 網(wǎng)站祠肥。
摘要
在本文中,我試圖闡明面向方面編程的概念梯皿,并向您介紹它與Spring框架的關(guān)系仇箱。在我即將發(fā)表的文章中,我將深入探討Spring AOP庫东羹,它的主要基石是什么剂桥,以及如何使用它希望我能提供幫助!請在下面的評論中告訴我們您的想法属提,不要忘記分享权逗!
來源:https://dzone.com/articles/what-is-spring-aop-1