出去面試,被一道 Spring 面試題難倒了

  • 2019 年 10 月 7 日
  • 筆記

很顯然,小黑同學還是掛了。還是老老實實的惡補基礎吧。

IOC

IOC(Inversion Of Controll,控制反轉)是一種設計思想,將原本在程式中手動創建對象的控制權,交由給Spring框架來管理。IOC容器是Spring用來實現IOC的載體,IOC容器實際上就是一個Map(key, value),Map中存放的是各種對象。

AOP

AOP(Aspect-Oriented Programming,面向切面編程)能夠將那些與業務無關,卻為業務模組所共同調用的邏輯或責任(例如事務處理、日誌管理、許可權控制等)封裝起來,便於減少系統的重複程式碼,降低模組間的耦合度,並有利於未來的可擴展性和可維護性。使用AOP之後我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化程式碼量,提高了系統的擴展性。

Spring AOP / AspectJ AOP 的區別?

Spring AOP屬於運行時增強,而AspectJ是編譯時增強。

Spring AOP基於代理(Proxying),而AspectJ基於位元組碼操作(Bytecode Manipulation)。

AspectJ相比於Spring AOP功能更加強大,但是Spring AOP相對來說更簡單。如果切面比較少,那麼兩者性能差異不大。但是,當切面太多的話,最好選擇AspectJ,它比SpringAOP快很多。

其實,小黑被問的這幾個問題,如果按照以下的思維導圖系統性的學習,還是很好回答的。