spring mvc實現原理
- 客戶端傳送請求到dispacherservlet(分發器)
- 有dispacherservlet控制器查詢handemapping,找到處理請求的controller
- controller處理完請求後,返回modelandview
- 有dispacherservlet查詢試圖解析器,找到modelandview制定的檢視
- 檢視負責將結果展示給客戶端
spring aop的應用場景
- 效能檢測
- 訪問控制,安全控制
- 日誌管理
- 事務
spring aop的實現原理
AOP是基於動態代理實現的
代理的三種方式
- 靜態代理
- JDK動態代理
- CGLIB代理
spring mvc攔截器和處理全域性異常
攔截器
- 實現handlerInterceptor介面
- 重寫preHandle方法,驗證是不是管理員
- 在dispacter-servelt.xml中配置會攔截的請求(過濾器是在web.xml中)
處理全域性異常
- 實現handlerExceptionResolver介面
- 重寫resolveException方法,返回的是modelandview物件,在系統拋異常時給使用者友好的提示
spring boot和spring mvc區別
- spring mvc需要配置大量的xml檔案,而boot能實現自動配置
- boot內嵌伺服器
- boot整合大量第三方配置庫,開箱即用
spring boot特點
- 建立獨立的Spring應用程式
- 嵌入的Tomcat,無需部署WAR檔案
- 簡化Maven配置
- 自動配置Spring
- 提供生產就緒型功能,如指標,健康檢查和外部配置
- 絕對沒有程式碼生成和對XML沒有要求配置
常見的starter
1.web
2.test
3.jpa
4.redis
5.mybatis
6.jdbc
7.mail
8.thymeleaf
9.security
10.websocket
複製程式碼
spring ioc
1.注入的三種方式
- 屬性注入(setter方法)
- 構造注入
- 介面注入
2.ioc容器通過反射機制,例項化bean並建立bean之間的依賴關係
Bean就是由Spring IOC容器初始化、裝配及被管理的物件。
攔截器和過濾器的區別和聯絡
過濾器
依賴於servlet容器,幾乎對所有請求都可以過濾,缺點是一個過濾器例項只能初始化一次,通常做一些過濾操作,獲取我們想要的資料
攔截器
只能對controller進行攔截,依賴與web框架所以可以呼叫spring的依賴注入,不依賴於servlet容器,基於反射機制,屬於aop的一種應用
spring boot自動配置原理
在spring的啟動類上新增@springbootapplication或@enableAutoConfiguration註解,會自動的去meaven中讀取每個stater中的spring.factories檔案,該檔案配置了所有需要被建立spring容器中的bean
spring中運用到的設計模式
- bean單例模式
- beanfactory工廠模式
- aop動態代理 代理模式
- 觀察者模式
Spring通過@Transaction註解技術來進行宣告式事物配置。
spring Bean的生命週期
spring 只提替我們管理單例模式的bean,對於prototype模式的bean,spring建立後就不再管理,需要使用者手動去管理
生命週期
例項化
--->填充屬性
--->呼叫各種 *Aware介面 詳細請看spring bean的生命週期
--->呼叫定製的初始化方法
--->bean準備就緒
--->呼叫定製的bean銷燬方法
初始化及銷燬
- 註解方式:在 bean 初始化時會經歷幾個階段,首先可以使用註解
@PostConstruct
,@PreDestroy
來在 bean 的建立和銷燬階段進行呼叫 - 實現initializingBean,DisposableBean介面也可以實現對Bean的初始化及銷燬操作。
- 當然也可以自定義初始化和銷燬的方法
實現*Aware介面
*Aware
介面可以用於在初始化 bean 時獲得 Spring 中的一些物件