网站建设飠金手指排名十五,网站在线支付接口申请,招聘网站如何做推广,缅甸网站建设1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loC#xff08;Inversion of Control #xff09;是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器#xff0c;我们之前学过的List/Map就是数据存储的容器#xff0c;to…1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loCInversion of Control 是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器我们之前学过的List/Map就是数据存储的容器tomcat是Web的容器 2.1 传统开发中的缺陷耦合问题 比如一个汽车程序依赖注入的设计 汽车依赖车身车身依赖底层底层依赖轮胎每当轮胎要新加一些个性化设计依赖轮胎的东西都要进行重加代码耦合性太高当一个类反发生改变其他类也得做出相应的改变
public class Tire {private int size20;public Tire(int size){this.sizesize;}/*** 当tire 发生了个性化的改变随之而变得就是依赖Tire 的Bottom* */public void init(){System.out.println(执行了轮胎的初始化方法sizethis.size);}}public class Bottom {//底盘private Tire tire;public Bottom(int size){tire new Tire(size);}public void init(){//依赖轮胎tire.init();}
}public class Framework {private Bottom bottom;//车身依赖地盘public Framework(int size){bottom new Bottom(size);}public void init(){bottom.init();}}public class Car {private Framework framework;public Car(int size){frameworknew Framework(size);}public void init(){framework.init();}
}当新加入这段代码后续就得改Bottom中的Bottom的构造方法向其中传入参数int size,后续也得向Farmework,Car中的构造方法加入参数 用专业一点的话来讲就是当底层代码改动后整个调用链上所有的代码都需要修改 2.2 改进后低耦合——IoC思想 public class Tire {private int size20;public Tire(int size){this .sizesize;}public void init(){System.out.println(轮胎sizesize);}
}public class Bottom {private Tire tire;public Bottom(Tire tire){// tirenew Tire();这是最初的写法this.tire tire;}public void init(){System.out.println(执行 Bottom);//依赖轮胎tire.init();}
}public class Framework {private Bottom bottom;public Framework(Bottom bottom){//之前是new一个Bottom对象,并且传入参数this.bottom bottom;}public void init(){//依赖底盘System.out.println(执行 Framework);bottom.init();//这一步就需要引用成员变量}
}public class Car {private Framework framework;public Car(Framework framework){this.frameworkframework;}public void init(){System.out.println(执行Car);//依赖车身framework.init();}
}
public class App {public static void main(String[] args) {Tire tirenew Tire(15);Bottom bottomnew Bottom(tire);Framework frameworknew Framework(bottom);Car carnew Car(framework);car.init();}
}改进后传递一个Tire对象给Bottom。 本质上就是对象的生命周期发生了改变,这张图很明显能看出来控制反转。 2.3 小结 可以发现类的创建顺序是反的传统代码是Car控制并创建FrameworkFramework控制并创建Bottom,依次往下而改进后控制权发生反转不再是上级对象控制并创建下级对象而是把下级对象注入到上级对象里面下级的控制不再由上级类控制了这样即使下级类发生任何改变当前类都是不受控制的这就是经典的控制反转也是IoC思想。 3.理解Spring IoC 既然Spring是一个loC控制反转容器重点还在容器二字上那么它就具备两个最基础的功能 将对象存入到容器 从容器中取出对象。 也就是说学 Spring 最核心的功能就是学如何将对象存入到Spring中再从Spring 中获取对象的过程。 将对象存放到容器中的好处将对象存储在loC 容器相当于将以后可能用的所有工具制作好都放到仓库中需要的时候直接取就行了用完再把它放回到仓库。而new 对象的方式相当于每次需要工具了才现做用完就扔掉了也不会保存下次再用的时候还得重新做这就是loC容器和普通程序开发的区别。Spring 是一个 包含多个工具和方法的loC 容器说的是对象的创建和销毁的权利都交给 Spring 来管理了它本身又具备了存储对象和获取对象的能力。 4.DIDependency Injection说明 DI(依赖注入)在程序运行期间动态的将某个对象引入到当前/行为的机制 IoC是思想DI是具体的实现。