Spring(万字详解版)

1.Spring是什么

Spring就是一个包含众多工具方法的IoC容器

1)什么是容器?

容器就是存储某种东西的基本装置,在Java的学习过程中,我们曾接触过很多容器,例如数据结构中的List,Map等是数据存储的容器,Tomcat就是web程序的容器

2)什么是IoC?

IoC(Inversion of Control)也就是控制反转的意思 那么也就是说spring是个控制反转的容器,但是这样说还是有点不好理解,我们可以理解为控制权转换了的对象的容器,那什么是控制转换,我们为什么要使用控制转换呢?举个例子,比方说我们要实现一个Car类,那么我们需要实现车身,车底盘,车轮胎,由上而下是一个层层递进,层层依赖的关系
在这里插入图片描述
按照上图的逻辑我们写出的代码是

class Car{
   
    public void init(){
   
        Body body = new Body();
        body.init();
    }
}

class Body{
   
    public void init(){
   
        Bottom bottom = new Bottom();
        bottom.init();
    }
}

class Bottom{
   
    public void init(){
   
        Tires tires = new Tires();
        tires.setSize(??);
    }
}

class Tires{
   
    private int size;
    public void setSize(int size){
   
        this.size = size;
    }
}

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

当我们的业务需求是需要涉及不同尺寸的轮胎时,我们就需要层层调用直到底层的setSize,也就是我们需要在Bottom类中调用时需要传入??参数,但是由于我们每一个类都是在类自己内部new出自己的所需依赖,那么这个所需的依赖的控制权就相当于在我们手中,所有类中需要的参数都需要我们自己层层传输,我们在想要修改size时,就需要从顶层的car类中开始传入参数,一步一步的传到底层,这时我们需要修改涉及的代码就太多了,而且当代码的依赖逻辑更复杂时,或者需要给最底层的轮胎增删一些参数(例如增加颜色属性),我们需要更容易凌乱,出现这个问题的原因是上述代码耦合性太高了,我们不妨想,将new依赖对象这个操作交到外部,也就是将依赖对象的控制权交出去,当我们需要的时候直接拿对象来使用即可(也就是采用注入所需依赖对象的方法),那么这个时候就直接将依赖的对象当成了一个方法,当我们对所以来对象想要进行一些修改时,我们只需要在外部类创建时进行修改,然后在调用类中增删改参数即可,这时就完美的实现了程序的解耦合,用代码来实现就是

class Car2{
   
    private Body2 body2;
    public Car2(Body2 body2){
   
        this.body2 = body2;
    }
    public void run(){
   
        body2.init();
    }
}

class Body2{
   
    private Bottom2 bottom2;
    public Body2(Bottom2 bottom2){
   
        this.bottom2 = bottom2;
    }
    public void init(){
   
        bottom2.init();
    }
}

class Bottom2{
   
    private Tires2 tires2;
    public Bottom2(Tires2 tires2){
   
        this.tires2 = tires2;
    }
    public void init(){
   
        tires2.init();
    }
}

class Tires2{
   
    private int size;
    public Tires2(int size){
   
        this.size = size;
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值