Spring是如何簡化java開發的

Spring是如何簡化java開發的

Spring最根本的使命就是爲了簡化java開發。爲了下降java開發的複雜性,Spring採起了如下的4中策略:java

  1. 基於POJO的輕量性和最小侵入性編程編程

  2. 經過依賴注入和麪向接口實現鬆耦合安全

  3. 基於切面和慣例進行聲明式編程框架

  4. 經過切面和模板減小樣板式代碼測試

POJO的輕量性和最小侵入性編程體如今哪裏?

POJO類就是一個類,包含了一堆屬性,還有get、set方法。Spring想要的就是這樣簡單。你爲了使用Spring,不須要修改原有的POJO類。不須要像EJB那樣,繼承一些必需要繼承和實現的方法。其實,這就是框架對你代碼的侵入。形成的結果就是,你的代碼與框架牢牢地耦合在一塊兒。那究竟是誰服務誰呢?(框架服務你仍是你服務框架)this

Spring竭力避免因自身的API而弄亂你的代碼。Spring不會強迫你實現Spring規範的藉口或繼承Spring規範的類。最壞的狀況是,你的代碼中加有Spring的註解。日誌

依賴注入

依賴注入就是爲了解耦。耦合具備兩面性:一方面,緊密耦合的代碼難以測試,難以複用,難以理解。另外一方面耦合又是必須的,徹底的耦合那就根本成不了一個系統。
對於依賴注入是怎麼解耦的,能夠這樣比喻。之前你的代碼裏須要一把斧子,那你就new出一把斧子(注意:這裏已經發生耦合)。如今有了依賴注入,你須要斧子的時候,Spring就會提供給你,至關於有一個斧子工廠同樣。code

應用切面

AOP容許你把遍及應用各處的功能分離出來造成可重用的組件。這些功能包括日誌、安全檢查、事務管理等。就拿日誌來講,若是不適用AOP,你可能把日誌功能分散的寫到各個業務邏輯類中(一改全都須要改),或者把日誌功能抽象成一個公共的類。但系統中仍是存在不少同樣的方法調用。這個時候若是使用AOP就能夠作到最小的侵入性。繼承

public class LogUtil{
    public void doItBefore(){
        System.out.println("do it before");
    }
    public void doItAfter(){
        System.out.println("do it after");
    }
}

public class Business{
    private LogUtil log;
    public Business(LogUtil log){
        this.log = log;
    }
    public void do(){
        //日誌
        log.doItBefore();
        //業務邏輯---開始
        System.out.println("do it");
        //業務邏輯---結束
        //日誌
        log.doItAfter();
    }
}

業務類Business須要知道日誌類LogUtil的存在嗎?使用AOP,在Spring的配置文件中進行配置就能夠了,Business類不須要作任何的改變。接口

使用模板消除樣式代碼

最多見的模板代碼就是jdbc的那些代碼,開頭和結尾基本上都相同,但與業務邏輯絕不相關,還不能不寫。使用模板就是能夠消除這些樣式代碼,使精力集中在業務邏輯的處理上。

相關文章
相關標籤/搜索