国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想

這篇具有很好參考價(jià)值的文章主要介紹了【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee


1,Spring是什么?

我們通常所說的Spring指的是 Spring Framework(Spring 框架),它是一個(gè)輕量級(jí)的 Java 開源框架,有著活躍龐?的社區(qū)。Spring 是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的,不僅?持?泛的應(yīng)?場(chǎng)景,還讓 Java 企業(yè)級(jí)的應(yīng)?程序開發(fā)更加簡(jiǎn)單。

如何簡(jiǎn)單地使??句話概括 Spring:Spring 是包含了眾多工具方法的 IoC 容器。

上述這句話中的有兩個(gè)重點(diǎn),其一是包含眾多工具方法,其二是IoC容器。

工具方法我們不難理解,但是IoC容器是什么?而對(duì)于IoC容器這個(gè)問題,我們將其劃分為兩個(gè)子問題,何為IoC?何為容器?

1.1,何為容器?

容器是用來容納某種物品的(基本)裝置。 ——來自:百度百科

在日常生活中,容器隨處可見。例如,我們使用的水杯就是容器,其是用來容納水的裝置;書架也是容器,其是用來容納書本的裝置 …

而在編程中,容器也隨處可見。例如,我們使用的整型數(shù)組是容器,其是用來存放整型數(shù)據(jù)的裝置;map也是容器,其是用來存放鍵值對(duì)的裝置 …

Spring 也是?個(gè)容器,那 Spring 是什么容器呢? Spring 是?個(gè) IoC 容器。

1.2,何為IoC?

IoC 是Inversion of Control 的縮寫,翻譯成中?是控制反轉(zhuǎn)的意思,也就是說 Spring 是?個(gè)控制反轉(zhuǎn)的容器。

那如何理解這控制反轉(zhuǎn)呢?我們從下面這個(gè)示例進(jìn)行理解。

示例前提:構(gòu)建?輛車(Car Class),然而車需要依賴車身(FrameWork Class),而車身需要依賴底盤(Bottom Class),而底盤需要依賴輪胎(Tire Class),輪胎尺寸規(guī)定為17

實(shí)現(xiàn)上述示例,有兩種方式,分別為傳統(tǒng)程序開發(fā)和控制反轉(zhuǎn)式程序開發(fā)。

1)傳統(tǒng)式程序開發(fā)

傳統(tǒng)程序開發(fā)的原理是在每個(gè)當(dāng)前類中創(chuàng)建下級(jí)類,從而實(shí)現(xiàn)類與類之間的依賴關(guān)系。

傳統(tǒng)程序開發(fā)–>最終程序的實(shí)現(xiàn)代碼如下:

1,Car(車)類

public class Car {
    private Framework framework;
    public Car(){
        framework = new Framework();
    }
    public void init(){
        System.out.println("do car ...");
        framework.init();
    }
}

2,F(xiàn)ramework(車身)類

public class Framework {
    private Bottom bottom;
    public Framework(){
        bottom = new Bottom();
    }
    public void init(){
        System.out.println("do framework ...");
        bottom.init();
    }
}

3,Bottom(底盤)類

public class Bottom {
    private Tire tire;
    public Bottom(){
        tire = new Tire();
    }
    public void init(){
        System.out.println("do bottom ...");
        tire.init();
    }
}

4,Tire(輪胎)類

public class Tire {
    private int size = 17;
    public Tire(){
    }
    public void init(){
        System.out.println("do tire >> size = " + size);
    }
}

5,Test(測(cè)試)類

public class Test {
    public static void main(String[] args) {
        Car car = new Car();
        car.init();
    }
}

6,測(cè)試運(yùn)行結(jié)果

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee

2)控制反轉(zhuǎn)式程序開發(fā)

控制反轉(zhuǎn)式程序開發(fā)的原理是將在每個(gè)當(dāng)前類中創(chuàng)建下級(jí)類改為在當(dāng)前類中傳遞注入下級(jí)類,從而實(shí)現(xiàn)類與類之間的依賴關(guān)系。

控制反轉(zhuǎn)式程序開發(fā)–>最終程序的實(shí)現(xiàn)代碼如下:

1,Car(車)類

public class Car {
    private Framework framework;
    public Car(Framework framework){
        this.framework = framework;
    }
    public void init(){
        System.out.println("do car ...");
        framework.init();
    }
}

2,F(xiàn)ramework(車身)類

public class Framework {
    private Bottom bottom;
    public Framework(Bottom bottom){
        this.bottom = bottom;
    }
    public void init(){
        System.out.println("do framework ...");
        bottom.init();
    }
}

3,Bottom(底盤)類

public class Bottom {
    private Tire tire;
    public Bottom(Tire tire){
        this.tire = tire;
    }
    public void init(){
        System.out.println("do bottom ...");
        tire.init();
    }
}

4,Tire(輪胎)類

public class Tire {
    private int size = 17;
    public Tire(){
    }
    public void init(){
        System.out.println("do tire ... >> size = " + size);
    }
}

5,Test(測(cè)試)類

public class Test {
    public static void main(String[] args) {
        Tire tire = new Tire();
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.init();
    }
}

6,測(cè)試運(yùn)行結(jié)果

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee

3)傳統(tǒng)式程序開發(fā)缺陷

在上述程序中,輪胎尺?的固定的,然而隨著對(duì)的車的需求量越來越?,個(gè)性化需求也會(huì)越來越多,這時(shí)候我們就需要加工多種尺寸的輪胎。那這時(shí)就需要對(duì)上述程序代碼進(jìn)行更改,修改后代碼如下:

1,Car(車)類

public class Car {
    private Framework framework;
    public Car(int size){
        framework = new Framework(size);
    }
    public void init(){
        System.out.println("do car ...");
        framework.init();
    }
}

2,F(xiàn)ramework(車身)類

public class Framework {
    private Bottom bottom;
    public Framework(int size){
        bottom = new Bottom(size);
    }
    public void init(){
        System.out.println("do framework ...");
        bottom.init();
    }
}

3,Bottom(底盤)類

public class Bottom {
    private Tire tire;
    public Bottom(int size){
        tire = new Tire(size);
    }
    public void init(){
        System.out.println("do bottom ...");
        tire.init();
    }
}

4,Tire(輪胎)類

public class Tire {
    private int size = 17;
    public Tire(int size){
        this.size = size;
    }
    public void init(){
        System.out.println("do tire >> size = " + size);
    }
}

5,Test(測(cè)試)類

public class Test {
    public static void main(String[] args) {
        Car car = new Car(20);
        car.init();
    }
}

6,測(cè)試運(yùn)行結(jié)果

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee

根據(jù)上述修改后的代碼不難看出,傳統(tǒng)式程序開發(fā)存在的問題是:當(dāng)最底層類改動(dòng)之后,整個(gè)調(diào)用鏈上的所有代碼都需要經(jīng)過修改。

而控制反轉(zhuǎn)式程序開發(fā)就可以很好地解決上述這個(gè)問題,?論底層類如何改動(dòng)和變化,整個(gè)調(diào)用鏈?zhǔn)遣挥米鋈魏胃淖兊摹?/strong>

4)開發(fā)方式對(duì)比總結(jié)

傳統(tǒng)式程序開發(fā)中的對(duì)象創(chuàng)建順序是:Car -> Framework -> Bottom -> Tire

控制反轉(zhuǎn)式程序開發(fā)中的對(duì)象創(chuàng)建順序是:Tire -> Bottom -> Framework -> Car

兩種方式的對(duì)比效果圖:

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee

從上面的對(duì)比中,不難看出:程序開發(fā)的實(shí)現(xiàn)代碼,類的創(chuàng)建順序是相反的。

傳統(tǒng)式程序開發(fā)的實(shí)現(xiàn)代碼是 Car 控制并創(chuàng)建了Framework,F(xiàn)ramework 創(chuàng)建并創(chuàng)建了 Bottom,依次往下。

而控制反轉(zhuǎn)式程序開發(fā)的控制權(quán)發(fā)生了反轉(zhuǎn),不再是上級(jí)對(duì)象創(chuàng)建并控制下級(jí)對(duì)象,而是把下級(jí)對(duì)象注?當(dāng)前對(duì)象中,這時(shí)下級(jí)的控制權(quán)不再由上級(jí)類控制。這樣無論下級(jí)類發(fā)?何種改變,當(dāng)前類都是不受影響的,這就是典型的控制反轉(zhuǎn),也就是 IoC 的實(shí)現(xiàn)思想。

5)IoC歸納總結(jié)

從上面這個(gè)示例中,我們知道了什么是控制反轉(zhuǎn),以及其的實(shí)現(xiàn)思想。

IoC是一種思想,而不是一種技術(shù),它的實(shí)現(xiàn)思想是將下級(jí)對(duì)象通過傳遞的方式注入到當(dāng)前類當(dāng)中,從而實(shí)現(xiàn)控制權(quán)的反轉(zhuǎn)。

IoC這種思想實(shí)現(xiàn)了解耦合的功能,減少模塊之間的依賴性,提高程序的獨(dú)立性,極大地降低了程序代碼的維護(hù)和調(diào)試難度。

耦合性也可被稱為程序相關(guān)性,一個(gè)好的程序代碼的耦合性(代碼之間的相關(guān)性)是很低的,也就是說程序之間的依賴性比較弱。

IoC控制反轉(zhuǎn)的深層理解:

在傳統(tǒng)式程序開發(fā)中,我們直接在對(duì)象內(nèi)部通過new方式進(jìn)行創(chuàng)建對(duì)象,是程序主動(dòng)創(chuàng)建并直接獲取依賴對(duì)象,對(duì)象是主動(dòng)地接收依賴對(duì)象,這也就是正轉(zhuǎn)。

而在控制反轉(zhuǎn)式程序開發(fā)中,IoC是有專門一個(gè)容器來創(chuàng)建并存儲(chǔ)這些對(duì)象,也就是使用Ioc容器來控制對(duì)象的創(chuàng)建存儲(chǔ),并且?guī)臀覀儾檎液妥⑷胍蕾噷?duì)象,對(duì)象是被動(dòng)的接受依賴對(duì)象,這也就是反轉(zhuǎn)。


2,Spring IoC 的理解

理解清楚了什么是容器?以及什么是IoC?這兩個(gè)問題,那接下來我們就接著往下講講如何理解Spring是一個(gè)IoC容器這句話呢?

IoC容器具備的最基本的兩個(gè)功能為:將對(duì)象存儲(chǔ)到容器中,從容器中取出對(duì)象。

也就是說學(xué) Spring 最核心的功能,就是學(xué)如何將對(duì)象存入到 Spring 中,再從 Spring 中獲取對(duì)象的過程。

IoC是通過IoC容器把對(duì)象的創(chuàng)建和調(diào)用過程交給Spring進(jìn)行管理,省去了使用 “new 類名” 的方式創(chuàng)建對(duì)象的步驟。

歸納:Spring 是?個(gè) IoC 容器,說的是對(duì)象的創(chuàng)建和銷毀的權(quán)利都交給 Spring 來管理了,它本身又具備了存儲(chǔ)對(duì)象和獲取對(duì)象的能力。

歸納:控制反轉(zhuǎn)式程序開發(fā)和傳統(tǒng)式程序開發(fā)的區(qū)別:

控制反轉(zhuǎn)式程序開發(fā)是將以后操作可能使用到的所有工具類創(chuàng)建好并存儲(chǔ)到IoC容器中,需要的時(shí)候直接從IoC容器中獲取,使用完后放回到IoC容器中;而傳統(tǒng)式程序開發(fā)是在每次需要的時(shí)候直接創(chuàng)建并使用,使用完后直接舍棄不進(jìn)行保存,下次使用時(shí)需重新創(chuàng)建和調(diào)用。

由此可歸納出Spring IoC 的優(yōu)點(diǎn):

  1. 解耦合,減少類與類之間的依賴性,提高程序的獨(dú)立性,降低了程序代碼的維護(hù)難度。
  2. 使用更加方便,不需要再手動(dòng)創(chuàng)建對(duì)象,也不需要關(guān)注這個(gè)對(duì)象背后的依賴關(guān)系。
  3. 效率更加高效,需要使用時(shí)直接從IoC容器中獲取,使用后放回IoC容器,不需要每次使用時(shí)都重新創(chuàng)建。

3,DI 是什么?

DI 是Dependency Injection的縮寫,翻譯成中文是依賴注入的意思。

所謂依賴注入,就是 IoC 容器在運(yùn)行期間,動(dòng)態(tài)地將某種依賴關(guān)系注入到對(duì)象之中的行為。

依賴注入(DI)和控制反轉(zhuǎn)(IoC)是從不同的角度來描述同?件事情。

而這件事情就是指通過引入 IoC 容器,利用依賴關(guān)系注入的方式,實(shí)現(xiàn)對(duì)象之間的解耦。

loC是一種思想目標(biāo),屬于指導(dǎo)原則,要想實(shí)現(xiàn)該思想目標(biāo),最終還是要有可行的落地方案,而DI就屬于具體的實(shí)現(xiàn)方式。


核心總結(jié)

1,Spring 是什么?如何理解 Spring?

解答:Spring是個(gè)流行的框架,用一句話概括Spring,Spring是包含眾多方法工具的IoC容器。他有兩大功能:將對(duì)象存儲(chǔ)到容器中以及從容器中獲取對(duì)象。

2,IoC 和 DI 是啥?有什么區(qū)別?

解答:IoC是Inversion of Control的縮寫,譯為控制反轉(zhuǎn),DI是Dependency Injection的縮寫,譯為依賴注入,兩者是從不同的角度來描述同?件事情。兩者區(qū)別為IoC是一種思想,而DI是IoC的一種具體實(shí)現(xiàn),是動(dòng)態(tài)將某種依賴注入到對(duì)象的行為。

3,Spring 最核心的功能是啥?

解答:Spring最核心的部分是IoC容器, 學(xué)Spring最核心的功能,就是學(xué)如何將對(duì)象存入到 Spring 中,再從 Spring 中獲取對(duì)象的過程。


結(jié)語

這就是本期博客的全部?jī)?nèi)容啦!如果有什么其他的問題無法自己解決,可以在評(píng)論區(qū)留言哦!

最后,如果你覺得這篇文章寫的還不錯(cuò)的話或者有所收獲的話,麻煩小伙伴們動(dòng)動(dòng)你們的小手,給個(gè)三連唄(點(diǎn)贊??,評(píng)論?,收藏??),多多支持一下!各位的支持是我最大的動(dòng)力,后期不斷更新優(yōu)質(zhì)的內(nèi)容來幫助大家,一起進(jìn)步。那我們下期見!

【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想,Java EE【進(jìn)階】,spring,java,java-ee文章來源地址http://www.zghlxwxcb.cn/news/detail-541004.html


到了這里,關(guān)于【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Spring】核心與設(shè)計(jì)思想

    【Spring】核心與設(shè)計(jì)思想

    ?哈嘍,哈嘍,大家好~ 我是你們的老朋友: 保護(hù)小周??? 談起Java 圈子里的框架,最年長(zhǎng)最耀眼的莫過于 Spring 框架啦,如今已成為最流行、最廣泛使用的Java開發(fā)框架之一。不知道大家有沒有在使用 Spring 框架的時(shí)候思考過這些問題, 什么是框架?Spring 是什么?如何理解

    2024年02月08日
    瀏覽(28)
  • 【Spring】(一)Spring設(shè)計(jì)核心思想

    【Spring】(一)Spring設(shè)計(jì)核心思想

    Spring 是一個(gè)開源的輕量級(jí) Java 框架,旨在簡(jiǎn)化 Java 應(yīng)用程序的開發(fā)。它提供了一個(gè)全面的編程和配置模型,用于構(gòu)建各種類型的應(yīng)用,包括企業(yè)級(jí)應(yīng)用和獨(dú)立的 Java 應(yīng)用。 Spring 的設(shè)計(jì)理念是基于依賴注入(Dependency Injection)和面向切面編程(Aspect-Oriented Programming),使得應(yīng)

    2024年02月14日
    瀏覽(23)
  • Spring框架核心與設(shè)計(jì)思想

    Spring框架核心與設(shè)計(jì)思想

    我們一般所說的Spring指的是Spring Framework(Spring 框架),它是一個(gè)開源的框架,Spring支持廣泛的應(yīng)用場(chǎng)景,它可以讓Java企業(yè)級(jí)的應(yīng)用程序開發(fā)變得更簡(jiǎn)單,官方一點(diǎn)的回答:spring是J2EE應(yīng)用程序框架,是輕量級(jí)的IoC和AOP的容器框架,主要是針對(duì)javaBean的生命周期進(jìn)行管理的輕量級(jí)

    2023年04月15日
    瀏覽(35)
  • Spring框架概述及核心設(shè)計(jì)思想

    Spring框架概述及核心設(shè)計(jì)思想

    我們通常所說的 Spring 指的是 Spring Framework(Spring 框架),它是?個(gè)開源框架,有著活躍而龐大的社區(qū),這就是它之所以能長(zhǎng)久不衰的原因;Spring 支持廣泛的應(yīng)用場(chǎng)景,它可以讓 Java 企業(yè)級(jí)的應(yīng)用程序開發(fā)起來更簡(jiǎn)單。 用?句話概括 Spring: Spring 框架是包含了眾多工具方法的

    2024年02月16日
    瀏覽(24)
  • 【Spring】學(xué)習(xí)Spring需要掌握的核心設(shè)計(jì)思想

    【Spring】學(xué)習(xí)Spring需要掌握的核心設(shè)計(jì)思想

    目錄 一、Spring是什么 二、什么是IoC容器 1、什么是容器 2、什么是IoC? ?3、Spring IoC 4、DI(依賴注入) 4.1、IoC和DI的區(qū)別 5、 DL(依賴查找) 我們通常所說的Spring指的是Spring Framework(Framework的意思就是框架),它是一個(gè)開源的框架,有著龐大的社區(qū),這就是它之所以能長(zhǎng)久不

    2024年02月14日
    瀏覽(31)
  • 【Spring】Spring有什么用?Spring核心與設(shè)計(jì)思想之IOC與DI

    【Spring】Spring有什么用?Spring核心與設(shè)計(jì)思想之IOC與DI

    ?Spring是一個(gè)開源的、輕量級(jí)的、面向企業(yè)級(jí)的Java應(yīng)用框架。它提供了一種基于依賴注入和面向切面編程的方式,幫助開發(fā)者構(gòu)建高效、可擴(kuò)展的應(yīng)用程序。 ?具體來說, Spring可以看作一個(gè)包含眾多工具方法的IOC容器。 Spring的出現(xiàn)是為了讓開發(fā)更簡(jiǎn)單~ 那么問題就很明確了

    2024年02月10日
    瀏覽(24)
  • 敏捷設(shè)計(jì)的的4個(gè)核心思想

    來自《互聯(lián)網(wǎng)產(chǎn)品之美》。 4個(gè)核心思想 1、強(qiáng)調(diào)面對(duì)面的溝通,也就是說溝通很重要,任何人的相互交流勝于任何流程和工具; 2、要把精力集中在可執(zhí)行的程序上,可以運(yùn)行的產(chǎn)品勝于綜合性文檔,也就是強(qiáng)調(diào)了原型、模型、演示等的重要性; 3、團(tuán)隊(duì)合作和團(tuán)隊(duì)激勵(lì),合

    2024年02月09日
    瀏覽(23)
  • java設(shè)計(jì)模式-目的及思想

    某類問題的通用解決方案; 代碼重用性 相同功能的代碼,不用多次編寫 可讀性 編程規(guī)范,便于其他程序員閱讀和理解 可擴(kuò)展性 新增功能時(shí),非常的方便 可靠性 新增功能時(shí),對(duì)原功能無影響 高內(nèi)聚、低耦合 使程序高內(nèi)聚、低耦合 找出應(yīng)用中可能變化之處,把他們獨(dú)立出

    2024年02月08日
    瀏覽(27)
  • JAVA設(shè)計(jì)模式詳解 解構(gòu)設(shè)計(jì)模式思想 詳細(xì)代碼對(duì)比

    設(shè)計(jì)模式-01簡(jiǎn)單工廠模式詳解 詳細(xì)代碼對(duì)比

    2024年02月09日
    瀏覽(27)
  • 【開源與項(xiàng)目實(shí)戰(zhàn):開源實(shí)戰(zhàn)】84 | 開源實(shí)戰(zhàn)四(上):剖析Spring框架中蘊(yùn)含的經(jīng)典設(shè)計(jì)思想或原則

    【開源與項(xiàng)目實(shí)戰(zhàn):開源實(shí)戰(zhàn)】84 | 開源實(shí)戰(zhàn)四(上):剖析Spring框架中蘊(yùn)含的經(jīng)典設(shè)計(jì)思想或原則

    在 Java 世界里,Spring 框架已經(jīng)幾乎成為項(xiàng)目開發(fā)的必備框架。作為如此優(yōu)秀和受歡迎的開源項(xiàng)目,它是我們?cè)创a閱讀的首選材料之一,不管是設(shè)計(jì)思想,還是代碼實(shí)現(xiàn),都有很多值得我們學(xué)習(xí)的地方。接下來,我們就詳細(xì)講講 Spring 框架中蘊(yùn)含的設(shè)計(jì)思想、原則和模式。因?yàn)?/p>

    2024年02月12日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包