spring面試題(四):面向切面程式設計AOP+MVC
Spring面向切面程式設計(AOP)
1. 解釋AOP
面向切面的程式設計,或AOP, 是一種程式設計技術,允許程式模組化橫向切割關注點,或橫切典型的責任劃分,如日誌和事務管理。
2. Aspect 切面
AOP核心就是切面,它將多個類的通用行為封裝成可重用的模組,該模組含有一組API提供橫切功能。
比如,一個日誌模組可以被稱作日誌的AOP切面。根據需求的不同,一個應用程式可以有若干切面。
在Spring AOP中,切面通過帶有@Aspect註解的類實現。
3. 在Spring AOP 中,關注點和橫切關注的區別是什麼?
關注點是應用中一個模組的行為,一個關注點可能會被定義成一個我們想實現的一個功能。
橫切關注點是一個關注點,此關注點是整個應用都會使用的功能,並影響整個應用,比如日誌,安全和資料傳輸
幾乎應用的每個模組都需要的功能。因此這些都屬於橫切關注點。
4. 連線點
連線點代表一個應用程式的某個位置,在這個位置我們可以插入一個AOP切面,它實際上是個應用程式執行Spring AOP的位置。
5. 通知
通知是個在方法執行前或執行後要做的動作,實際上是程式執行時要通過SpringAOP框架觸發的程式碼段。
Spring切面可以應用五種型別的通知:
- before:前置通知,在一個方法執行前被呼叫。
- after: 在方法執行之後呼叫的通知,無論方法執行是否成功。
- after-returning: 僅當方法成功完成後執行的通知。
- after-throwing: 在方法丟擲異常退出時執行的通知。
- around: 在方法執行之前和之後呼叫的通知。
6. 切點
切入點是一個或一組連線點,通知將在這些位置執行。可以通過表示式或匹配的方式指明切入點。
7. 什麼是引入?
引入允許我們在已存在的類中增加新的方法和屬性。
8. 什麼是目標物件?
被一個或者多個切面所通知的物件。它通常是一個代理物件。也指被通知(advised)物件。
9. 什麼是代理?
代理是通知目標物件後建立的物件。從客戶端的角度看,代理物件和目標物件是一樣的。
10. 有幾種不同型別的自動代理?
BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying
11. 什麼是織入。什麼是織入應用的不同點?
織入是將切面和到其他應用型別或物件連線或建立一個被通知物件的過程。
織入可以在編譯時,載入時,或執行時完成。
12. 解釋基於XML Schema方式的切面實現。
在這種情況下,切面由常規類以及基於XML的配置實現。
13. 解釋基於註解的切面實現
在這種情況下(基於@AspectJ的實現),涉及到的切面宣告的風格與帶有java5標註的普通java類一致。
Spring 的MVC
1. 什麼是Spring的MVC框架?
Spring 配備構建Web 應用的全功能MVC框架。Spring可以很便捷地和其他MVC框架整合,如Struts,Spring 的MVC框架用控制反轉把業務物件和控制邏輯清晰地隔離。它也允許以宣告的方式把請求引數和業務物件繫結。
2. DispatcherServlet
Spring的MVC框架是圍繞DispatcherServlet來設計的,它用來處理所有的HTTP請求和響應。
3. WebApplicationContext
WebApplicationContext 繼承了ApplicationContext 並增加了一些WEB應用必備的特有功能,它不同於一般的ApplicationContext ,因為它能處理主題,並找到被關聯的servlet。
4. 什麼是Spring MVC框架的控制器?
控制器提供一個訪問應用程式的行為,此行為通常通過服務介面實現。
控制器解析使用者輸入並將其轉換為一個由檢視呈現給使用者的模型。
Spring用一個非常抽象的方式實現了一個控制層,允許使用者建立多種用途的控制器。
68. @Controller 註解
該註解表明該類扮演控制器的角色,Spring不需要你繼承任何其他控制器基類或引用Servlet API。
69. @RequestMapping 註解
該註解是用來對映一個URL到一個類或一個特定的方處理法上。