經典Java面試題 Spring AOP

2021-07-30 07:28:10 字數 1323 閱讀 5973

[面試原題]

action類的定義如下:

為該類的actionsomething方法定義的切面攔截如下:

請問在執行action物件的actionsomething()時的輸出是什麼?

a. 123456 b. 654321 c. 521643 d.521463

[正確答案]c

[面試技術點]

spring

aop定義以及切面執行順序。

[解讀]

aop技術利用一種稱為「橫切」的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到乙個可重用模組,並將其名為「aspect」,即方面。所謂「方面」,簡單地說,就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可操作性和可維護性。使用「橫切」技術,aop

把軟體系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的乙個特點是,他們經常發生在核心關注點的多處,而各處都基本相似。比如許可權認證、日誌、事務處理。aop 的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

本例中@pointcut("execution(* com.bwf.web.action*.*(..))")定了乙個切入點,正規表示式的意思是在執行com.bwf.web.action類的所有方法時,將會傳送performance切入點通知。

@before是在所攔截方法執行之前執行一段邏輯。

@after 是在所攔截方法執行之後執行一段邏輯。

@around是可以同時在所攔截方法的前後執行一段邏輯。

@afterreturning在所攔截方法return後執行該註解的函式。

本例中,首先要執行的是@around註解的函式,所以,先列印5。obj = joinpoint.proceed();呼叫的就是action中的actionsomething函式本身。那麼在執行actionsomething函式前,首先要執行@before註解函式,因此,再列印2。之後是performance函式執行,列印1,接下來執行around的最後一步輸出,列印6。然後攔截函式執行完畢,呼叫@after註解函式,列印4。最後攔截函式return後,執行@afterreturn註解函式,列印3。

經典JAVA面試題

建立 tcp ip 連線 三次握手具體過程 由瀏覽器傳送乙個 http 請求 經過路由器的 通過伺服器的防火牆,該 http 請求到達了伺服器 伺服器處理該 http 請求,返回乙個 html 檔案 瀏覽器解析該 html 檔案,並且顯示在瀏覽器端 這裡需要注意 2.事務的併發問題有哪幾種?答 丟失...

java經典面試題

string str abcdesjkjsadfoiqwejhjkahjsiuhaskhka int counter new int 26 for int i 0 i經典面試題目 int n 5 for int i 0 i 5 i system.out.println n 5解析 n 5 n n 規...

java 經典多點面試題

以下知識點包含哪幾部分 public class test public void run start 1.匿名內部類 new runnable 必須繼承乙個父類或實現乙個介面 runnable是乙個介面 new thread new runnable 2.物件呼叫成員方法 簡化相當於 new th...