初识Spring

目录

 

一、什么是Spring

二、什么是IoC容器

1、什么是容器

2、什么是IoC

3、理解IoC 

3.1 传统的构建方式:

3.2 控制反转式: 

3.3 对比总结

4、理解Spring IoC

三、什么是DI


一、什么是Spring

        Spring指的是Spring Framework(Spring框架),它是一个包含了众多工具方法的IoC容器

二、什么是IoC容器

1、什么是容器

        通常我们所说的容器就是用来存取某种物品的装置,而程序中的容器,比如List/Map是存储数据的容器;Tomcat是存储Web程序的容器……

2、什么是IoC

        IoC全称是Inversion of Control,即控制反转的意思,也就是说,Spring是一个控制反转的容器。

3、理解IoC 

示例:构建一辆“车”的程序

3.1 传统的构建方式:

public class Old {
    //汽车类
    static class Car{
        public FrameWork frameWork;//依赖车身

        public Car(int size){
            frameWork = new FrameWork(size);
        }

        //初始化汽车
        public void init(){
            frameWork.init();
        }
    }
    //车身类
    static class FrameWork{
        public Bottom bottom;//依赖底盘

        public FrameWork(int size){
            bottom = new Bottom(size);
        }

        //初始化车身
        public void init(){
            bottom.init();
        }
    }
    //底盘类
    static class Bottom{
        public Tire tire;//依赖轮胎

        public Bottom(int size){
            tire = new Tire(size);
        }

        //初始化底盘
        public void init(){
            tire.init();
        }
    }
    //轮胎类
    static class Tire{
        int size;

        public Tire(int size){
            this.size = size;
        }

        //初始化轮胎
        public void init(){
            System.out.println("初始化轮胎成功,size = "+this.size);
        }
    }

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

传统开发的缺陷

        当最底层的Tire类的构造方法发生变化时,整个调用链上的代码都需要因之改变,代码的耦合性很高。

3.2 控制反转式: 

    //汽车类
    static class Car{
        public FrameWork frameWork;//依赖车身

        public Car(FrameWork frameWork){
            this.frameWork = frameWork;
        }

        //初始化汽车
        public void init(){
            frameWork.init();
        }
    }
    //车身类
    static class FrameWork{
        public Bottom bottom;//依赖底盘

        public FrameWork(Bottom bottom){
            this.bottom = bottom;
        }

        //初始化车身
        public void init(){
            bottom.init();
        }
    }
    //底盘类
    static class Bottom{
        public Tire tire;//依赖轮胎

        public Bottom(Tire tire){
            this.tire = tire;
        }

        //初始化底盘
        public void init(){
            tire.init();
        }
    }
    //轮胎类
    static class Tire{
        int size;

        public Tire(int size){
            this.size = size;
        }

        //初始化轮胎
        public void init(){
            System.out.println("初始化轮胎成功,size = "+this.size);
        }
    }

    public static void main(String[] args) {
        int size = 20;
        Tire tire = new Tire(20);
        Bottom bottom = new Bottom(tire);
        FrameWork frameWork = new FrameWork(bottom);
        Car car = new Car(frameWork);
        car.init();
    }

控制反转的优点

        控制反转的构建方式把传统的new对象的操作变为了在当前类中注入一个对象,此时,无论底层代码如何变化,整个调用链都不需要做任何调整,从而实现了代码之间的解耦。

3.3 对比总结

在传统的代码中,对象创建的顺序是:Car、Framework、Bottom、Tire;

控制反转式的代码中,对象创建的顺序是:Tire、Bottom、FrameWork、Car。

可以发现,控制反转式的代码中,对象的创建顺序和传统代码中的恰恰相反,上级类不再控制所依赖的下级类,而是把下级类的对象注入到当前对象中,这样即使下级类发生任何变化,都不会影响到当前的类,这就是典型的控制反转,也就是IoC的思想。

4、理解Spring IoC

既然Spring是一个IoC容器,那么它就具备容器最基本的两个功能:

a. 将对象存入到容器;

b. 从容器中取出对象。

Spring最核心的功能,就是将对象存入到Spring中,从Spring中取出对象,既然对象都存入到Spring中了,那么对象的创建和销毁的权利都由Spring来管理了。

三、什么是DI

        DI是Dependency Injection的缩写,即依赖注入的意思。依赖注入就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象中。

IoC和DI是同一概念的不同角度的描述,IoC是一种思想,而DI则是实现这种思想的一个方式。

比如乐观锁是一种思想,而CAS则是乐观锁的一种实现方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃点橘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值