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(依赖注入)是一种实现方式,比如我们对上一篇图书管理系统的代码进行修改