Spring IoC

Spring 是一个包含众多工具 IoC 容器

Spring 两大核心思想 : 1. IoC  2.AOP (重要面试题)

容器 : List/map 是装数据的容器

          Tomcat 是装web的容器

Spring 容器装的是对象

IoC 控制反转=>控制权反转=>创建对象的控制权交给了Spring

Spring 是 IoC 容器,也就是控制反转的容器,创建对象的控制权交给了 Spring ,由Spring 来帮我们创建管理这些对象

现在我们写一个案例,一辆车的生产,这是方法1,分成五个类

package com.example.ioc.ioc.v1;
public class Main {
    public static void main(String[] args) {
        Car car = new Car(17);
        car.run();
        Car car2 = new Car(19);
        car.run();
    }
}


package com.example.ioc.ioc.v1;
public class Car {
    private Framework framework;
    public Car(int size) {
        framework = new Framework(size);
        System.out.println("car init...");
    }
    public void run(){
        System.out.println("car run...");
    }
}


package com.example.ioc.ioc.v1;
public class Framework {
    private Bottom bottom;
    public Framework(int size) {
        bottom = new Bottom(size);
        System.out.println("framework init...");
    }
}


package com.example.ioc.ioc.v1;
public class Bottom {
    private Tire tire;
    public Bottom(int size){
        tire = new Tire(size);
        System.out.println("bottom init...");
    }
}


package com.example.ioc.ioc.v1;
public class Tire {
    private int size ;
    public Tire(int size){
        this.size = size;
        System.out.println("tire init...size:"+size);
    }
}

 下面是方法2:

package com.example.ioc.v2;
public class Main {
    public static void main(String[] args) {
        Tire tire = new Tire(17,"red");
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.run();
    }
}


package com.example.ioc.v2;
public class Car {
    private Framework framework;
    public Car(Framework framework) {
        this.framework = framework;
        System.out.println("car init...");
    }
    public void run(){
        System.out.println("car run...");
    }
}


package com.example.ioc.v2;
public class Framework {
    private Bottom bottom;
    public Framework(Bottom bottom) {
        this.bottom = bottom;
        System.out.println("framework init...");
    }
}


package com.example.ioc.v2;
public class Bottom {
    private Tire tire;
    public Bottom(Tire tire) {
        this.tire = tire;
        System.out.println("bottom init...");
    }
}


package com.example.ioc.v2;
public class Tire {
    private int size ;
    private String color;
    public Tire(int size,String color){
        this.size = size;
        this.color = color;
        System.out.println("tire init...size:"+size);
        System.out.println("tire init...color:"+color);
    }
}

方法二的耦合度更低,相互之间的影响更小

IoC 是一种思想,DI(依赖注入)是一种实现方式,比如我们对上一篇图书管理系统的代码进行修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值