一:Spring
1:Spring是什么
Spring:Spring是包含了众多工具方法的IOC容器.
1.1什么是容器
1.2什么是IoC?
IoC:"控制反转"===Spring是一个包含众多工具的"控制反转"的容器.
将对象的生命周期进行控制反转.
1.2.1 传统程序开发
代码如下:
public class Car { private Framework framework; public Car(){ framework=new Framework(); } public void init(){ //依赖车身 framework.init(); } } public class Framework { private Bottom bottom; public Framework(){ bottom=new Bottom(); } public void init(){ //依赖底盘 bottom.init(); } } public class Bottom { public Tire tire; public Bottom(){ tire=new Tire(); } public void init(){ //依赖轮胎 tire.init(); } } public class Tire { public int size=20; public void init(){ System.out.println("执行了轮胎的初始化方法,size: "+this.size); } } public class App { public static void main(String[] args) { Car car=new Car(); car.init(); } }
传统的程序开发:以上述代码为例,一个类依赖一个类,依次往上进行依赖,最底层的类的属性改了,全部都得改.===扩展性差,耦合度高,当Tire修改之后->Bottom进行修改->FrameWork进行修改->Car进行修改
1.2.2 IoC程序开发
IoC解决传统程序开发,让耦合度降低.低耦合
Tire进行修改,其他所依赖的类不用发生改变.
public class Tire { private int size=20; public Tire (int size){ this.size=size; } public void init(){ System.out.println("轮胎---size: "+size); } } public class Botton { private Tire tire; public Botton(Tire tire){ this.tire=tire; } public void init(){ System.out.println("执行 Bottom"); tire.init(); } } public class Framework { private Botton bottom; public Framework(Botton bottom){ this.bottom=bottom; } public void init(){ System.out.println("执行 framework"); bottom.init(); } } public class Car { public Framework framework; public Car(Framework framework){ this.framework=framework; } public void init(){ System.out.println("car执行完了"); framework.init(); } } public class App { public static void main(String[] args) { Tire tire=new Tire(30); Botton botton=new Botton(tire); Framework framework=new Framework(botton); Car car=new Car(framework); car.init(); } }
两组代码进行比对:
当Tire类发生改变:假设,我们要改变轮胎的颜色,看所依赖的前面的类会不会发生改变?
public class Tire { private int size=20; private String color; public Tire (int size,String color){ this.size=size; this.color=color; } public void init(){ System.out.println("轮胎---size: "+size+"轮胎颜色---color:"+color); } }
我们会发现,当将最底层的类进行改变之后,其他所依赖的类并没有因为最底层依赖类改变而改变.对于生命周期进行托管
以App的角度进行解释
1.3理解Spring IoC
Spring是一个包含了很多工具的IoC容器.
Spring的核心功能,就是学如何将对象存入到Spring中,再从Spring中获取对象过程.
Spring是一个控制反转的容器,具备两个最基础的功能.
1:将对象存入到容器
2:从容器中取出对象
1.4 DI:依赖注入
IoC是一个思想,DI是IoC的一种实现方式.