最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring零基礎(chǔ)到進(jìn)階之鴻蒙開(kāi)篇

 更新時(shí)間:2022年07月11日 10:15:57   作者:棟zzzz  
Spring框架是一個(gè)開(kāi)放源代碼的J2EE應(yīng)用程序框架,由Rod Johnson發(fā)起,是針對(duì)bean的生命周期進(jìn)行管理的輕量級(jí)容器(lightweight container)。 Spring解決了開(kāi)發(fā)者在J2EE開(kāi)發(fā)中遇到的許多常見(jiàn)的問(wèn)題,提供了功能強(qiáng)大IOC、AOP及Web MVC等功能

Spring是什么

用一句簡(jiǎn)單的話來(lái)概括Spring:Spring是包含了眾多工具方法的IoC容器。那么問(wèn)題來(lái)了,什么是容器,什么是IOC容器?下面就一起來(lái)看看吧

1.什么是容器?

容器就是用來(lái)榮南某種物品的裝置,前面我們也是學(xué)了很多容器的,類似于List/Map就是一個(gè)存儲(chǔ)數(shù)據(jù)的容器,Tomcat就是一個(gè)存儲(chǔ)Web項(xiàng)目的容器。

2.什么是IOC?

IOC(inversion of Control)翻譯成中文就是“控制反轉(zhuǎn)”的意思,這具體是什么意思呢?通過(guò)一個(gè)例子來(lái)解釋一下:

public class NewCarExample {
    public static void main(String[] args) {
        Car car = new Car();
        car.init();
    }
    /**
     * 汽?對(duì)象
     */
    static class Car {
        public void init() {
            // 依賴?身
            Framework framework = new Framework();
            framework.init();
        }
    }
    /**
     * ?身類
     */
    static class Framework {
        public void init() {
            // 依賴底盤
            Bottom bottom = new Bottom();
            bottom.init();
        }
    }
    /**
     * 底盤類
     */
    static class Bottom {
        public void init() {
            // 依賴輪胎
            Tire tire = new Tire();
            tire.init();
        }
    }
    /**
     * 輪胎類
     */
    static class Tire {
        // 尺?
        private int size = 30;
        public void init() {
            System.out.println("輪胎尺?:" + size);
        }
    }
}

此時(shí)就構(gòu)建出來(lái)一輛“汽車”,此時(shí)認(rèn)為只要打印出來(lái)了輪胎的尺寸就表示構(gòu)建成功了:

但是如果需求如果發(fā)生了變化,不再自己給定汽車的輪胎尺寸,而是根據(jù)用戶的需求來(lái)進(jìn)行變化,此時(shí)就會(huì)發(fā)現(xiàn)要改的代碼不僅僅只是一個(gè)參數(shù)

public class NewCarUpdateExample {
    public static void main(String[] args) {
        //用戶自己給定尺寸
        Car car = new Car(50);
        car.run();
    }
    /**
     * 汽?對(duì)象
     */
    static class Car {
        private Framework framework;
        public Car(int size) {
            framework = new Framework(size);
        }
        public void run() {
            // 依賴?身
            framework.init();
        }
    }
    /**
     * ?身類
     */
    static class Framework {
        private Bottom bottom;
        public Framework(int size) {
            bottom = new Bottom(size);
        }
        public void init() {
            // 依賴底盤
            bottom.init();
        }
    }
    /**
     * 底盤類
     */
    static class Bottom {
        private Tire tire;
        public Bottom(int size) {
            tire = new Tire(size);
        }
        public void init() {
            // 依賴輪胎
            tire.init();
        }
    }
    /**
     * 輪胎類
     */
    static class Tire {
        // 尺?
        private int size;
        public Tire(int size) {
            this.size = size;
        }
        public void init() {
            System.out.println("輪胎尺?:" + size);
        }
    }
}

這才僅僅是改變了一個(gè)輪胎尺寸,如果需求再需要加顏色、花紋、logo呢?那就會(huì)更加麻煩,這些都是當(dāng)?shù)讓影l(fā)生改變的時(shí)候,要修改的是整個(gè)調(diào)?鏈上的所有代碼,那么為什么會(huì)出現(xiàn)這樣的問(wèn)題呢?

分析可知,這些類都是互相依賴的,耦合性非常強(qiáng),那么該如何解耦呢?IoC就可以解決這樣的問(wèn)題,將控制權(quán)反轉(zhuǎn)出去,不再自己掌控,而是將控制權(quán)交給IoC管理,只有自己使用的使用才調(diào)用

public class IocCarExample {
    public static void main(String[] args) {
        Tire tire = new Tire(20);
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.run();
    }
    static class Car {
        private Framework framework;
        public Car(Framework framework) {
            this.framework = framework;
        }
        public void run() {
            framework.init();
        }
    }
    static class Framework {
        private Bottom bottom;
        public Framework(Bottom bottom) {
            this.bottom = bottom;
        }
        public void init() {
            bottom.init();
        }
    }
    static class Bottom {
        private Tire tire;
        public Bottom(Tire tire) {
            this.tire = tire;
        }
        public void init() {
            tire.init();
        }
    }
    static class Tire {
        private int size;
        public Tire(int size) {
            this.size = size;
        }
        public void init() {
            System.out.println("輪胎:" + size);
        }
    }
}

此時(shí)就不在類里面進(jìn)行控制了,而是只有在需要使用的時(shí)候,才去傳入而是不是自己控制

再需要改動(dòng)的時(shí)候的話,就只需要改最底層的,而不是改變整個(gè)控制鏈!

因此使用IOC最大的優(yōu)點(diǎn)就是實(shí)現(xiàn)了代碼的解耦;對(duì)象(Bean)生命周期交給IOC框架來(lái)維護(hù),就不需要再關(guān)注對(duì)象的創(chuàng)建了!

3.理解Spring IoC

通過(guò)上面的對(duì)IoC的認(rèn)識(shí),就可以得知Spring IoC容器最核心的功能了:

  • 將Bean(對(duì)象)存儲(chǔ)到Spring(容器)中;
  • 將Bean(對(duì)象)從Spring(容器)中取出來(lái);

4.了解DI

說(shuō)到IoC就不得不提起DI(Dependency Injection)了,翻譯過(guò)來(lái)就是依賴注入的意思,那具體代表什么呢?所謂依賴注?,其實(shí)就是在 IoC 容器運(yùn)?期間,動(dòng)態(tài)地將某種依賴關(guān)系注?到對(duì)象之中,其實(shí)DI和IoC是從不同的?度的描述的同?件事情,而IoC其實(shí)是一種思想,而DI是具體的落地實(shí)現(xiàn),思想就指導(dǎo)了具體的落地實(shí)現(xiàn)!

IoC和DI的區(qū)別:IoC是一種思想,DI是一種實(shí)現(xiàn)(類似于樂(lè)觀鎖和CAS);

第一次介紹到這就結(jié)束了,主要還是先來(lái)認(rèn)識(shí)一下Spring到底是什么,后面我會(huì)再介紹其具體使用和方法的!

到此這篇關(guān)于Spring零基礎(chǔ)到進(jìn)階之鴻蒙開(kāi)篇的文章就介紹到這了,更多相關(guān)Spring 基礎(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

彰化市| 华池县| 五常市| 汝城县| 河源市| 松滋市| 光山县| 佛山市| 息烽县| 镇原县| 开江县| 巴中市| 井冈山市| 波密县| 萨迦县| 元阳县| 荣昌县| 林州市| 获嘉县| 佛教| 甘孜县| 永城市| 准格尔旗| 永新县| 故城县| 和平县| 佛教| 辰溪县| 平乡县| 枣庄市| 门头沟区| 高安市| 保山市| 富裕县| 营山县| 五家渠市| 政和县| 德庆县| 台中市| 东乌珠穆沁旗| 行唐县|