SSH與SSM之間有什麼區別?——面試題提煉

SSH與SSM之間有什麼區別?——面試題提煉前言:對於咱們java程序員而言,在面試的過程當中,無疑不會被問到有關SSH與SSM的問題,因此我就在這裏提煉了一下我對它們的認識,以做後續參考,有什麼寫的不對的地方,還請指正與諒解。java

從大致方面回答:程序員

        SSH        SSM
指向技術        Struts+Spring+hibernate        Spring+SpringMVC+MyBatis
因此只需回答面試官Struts和SpringMVC的區別以及Hibernate和Mybatis的區別面試

一、Struts2與SpringMVC
        Struts2        SpringMVC
核心處理器(入口)        Filter        Servlet
        基於類,每次發一次請求都會實例一個Action        基於方法設計
開發效率        開發效率SpringMVC比Struts2高        支持JSR303,處理ajax請求更加方便
頁面的開發效率        OGNL表達式使頁面的開發效率更高些        頁面開發效率相對低些ajax

二、Hibernate與Mybatis
        Hibernate        Mybatis
開發效率        sql語句已經被封裝,直接可使用,加快系統開發        屬於半自動化,sql須要手工完成,稍微繁瑣
SQL優化        自動生成SQL,有些語句較爲繁瑣,會多消耗一些性能        手動編寫SQL,能夠避免不須要的查詢,提升系統性能
對象管理        完整的ORM框架,開發過程當中,無需過多關注底層實現,只須要管理對象便可        須要自行管理映射關係spring

三、Spring
1)什麼是Spring?及其優勢?
spring是一個輕量級的IOC與AOP容器框架sql

對主流框架有很好的集成支持,如Hibernate、SpringMVC等框架數據庫

低侵入式的,基於Spring開發通常不依賴於它的類。編程

Spring是個容器,由於它包含而且管理應用對象的生命週期和配置,好比對象的建立、銷燬、回調等框架

對事務的管理函數

2)講一講你對AOP和IOC的理解?
IOC:控制反轉(Inversion of Control,簡稱:IOC),本來應該由咱們new對象的這個操做轉移到Spring容器中執行

eg:

在一個項目中,若是有100我的請求同一個方法,這個方法會被調用100次,那類中new的變量也會被建立100次,這是至關耗費資源的;而IOC底層對這種對象的建立使用的是單例模式,這樣就避免了前面所說的資源損耗。

AOP:面向切面編程(Aspect Oriented Programming,簡稱:AOP),講到AOP就必須先說起如下OOP,OOP引入封裝、繼承、多態等概念來創建一種對象層次結構,用於模擬公共行爲的一個集合。不過OOP容許開發者定義縱向的關係,但並不適合定義橫向的關係,例如日誌功能

,簡單說就是那些與業務無關,卻爲業務模塊所共同調用的邏輯或責任封裝起來,便於減小系統的重複代碼,下降模塊之間的耦合度,並有利於將來的可操做性和可維護性。

eg:

項目中體現:事務 日誌

操做數據庫的增刪改以前,都須要開啓事務,增刪改以後,都須要提交事務,這樣咱們就能夠寫一個攔截器,底層就是採用動態代理實現前置通知和後置通知,在前置通知中開啓事務,在後置通知中提交事務,在spring.xml中配置通知便可,spring的事務管理底層就用到了AOP

3)Spring的注入方式有哪些?
set注入:

爲須要控制反轉的變量提供set方法,在spring配置文件中使用<property>標籤配置

構造注入:

爲須要控制反轉的變量提供構造函數,在spring配置文件中使用<constructor-arg>標籤配置

接口注入:

具備侵略性,必需要繼承才能用。

相關文章
相關標籤/搜索