面試集錦(三)spring

zhusir發表於2018-08-21

spring mvc實現原理

  1. 客戶端傳送請求到dispacherservlet(分發器)
  2. 有dispacherservlet控制器查詢handemapping,找到處理請求的controller
  3. controller處理完請求後,返回modelandview
  4. 有dispacherservlet查詢試圖解析器,找到modelandview制定的檢視
  5. 檢視負責將結果展示給客戶端

spring aop的應用場景

  1. 效能檢測
  2. 訪問控制,安全控制
  3. 日誌管理
  4. 事務

spring aop的實現原理

 AOP是基於動態代理實現的

代理的三種方式

  • 靜態代理
  • JDK動態代理
  • CGLIB代理

spring mvc攔截器和處理全域性異常

攔截器

  1. 實現handlerInterceptor介面
  2. 重寫preHandle方法,驗證是不是管理員
  3. 在dispacter-servelt.xml中配置會攔截的請求(過濾器是在web.xml中)

處理全域性異常

  1. 實現handlerExceptionResolver介面
  2. 重寫resolveException方法,返回的是modelandview物件,在系統拋異常時給使用者友好的提示

spring boot和spring mvc區別

  1. spring mvc需要配置大量的xml檔案,而boot能實現自動配置
  2. boot內嵌伺服器
  3. boot整合大量第三方配置庫,開箱即用

spring boot特點

  1. 建立獨立的Spring應用程式
  2. 嵌入的Tomcat,無需部署WAR檔案
  3. 簡化Maven配置
  4. 自動配置Spring
  5.  提供生產就緒型功能,如指標,健康檢查和外部配置
  6.  絕對沒有程式碼生成和對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銷燬方法

初始化及銷燬

  1. 註解方式:在 bean 初始化時會經歷幾個階段,首先可以使用註解 @PostConstruct, @PreDestroy 來在 bean 的建立和銷燬階段進行呼叫
  2. 實現initializingBean,DisposableBean介面也可以實現對Bean的初始化及銷燬操作。
  3. 當然也可以自定義初始化和銷燬的方法

實現*Aware介面

*Aware 介面可以用於在初始化 bean 時獲得 Spring 中的一些物件


相關文章