昆明seo网站推广,poi player wordpress,临淄百度信息港网,网站开发需要工具目录 一、什么是Spring#xff1f;
二、什么是 Ioc #xff1f;
2.1 控制反转的实现方式
2.1.1 依赖注入
2.1.2 依赖查找
2.1.3 优点分析
2.2 理解 Ioc 一、什么是Spring#xff1f;
我们通常所说的 Spring 指的是 Spring Framework#xff08;Spring 框架#xff…目录 一、什么是Spring
二、什么是 Ioc
2.1 控制反转的实现方式
2.1.1 依赖注入
2.1.2 依赖查找
2.1.3 优点分析
2.2 理解 Ioc 一、什么是Spring
我们通常所说的 Spring 指的是 Spring FrameworkSpring 框架它是个开源框架有着活跃的社区这就是它之所以能久经不衰的原因。用一句话进行概括Spring是包含了众多工具方法的 loC 容器。那什么是 loC 容器呢
二、什么是 Ioc
IoCInversion of Control控制反转英文翻译即 “控制反转” 的意思是 Spring框架的核心概念之一 它是一种设计原则和编程思想设计思想用于实现松耦合和可测试的应用程序。在传统的编程模式中对象之间的创建、组装和管理是通过开发人员手动完成的而在 loC模式下则是通过一个容器来进行管理。
2.1 控制反转的实现方式
2.1.1 依赖注入
依赖注入是loC 的一种具体的实现方式通过将依赖关系注入到对象中实现对象之间的松耦合。容器负责查找依赖对象并将其自动注入到相应的对象中。依赖注入可以通过构造函数、Setter方法或接口注入来完成。依赖注入的优点是减少对象之间的耦合使代码更加灵活和可维护。
2.1.2 依赖查找
依赖查找是另一种 loC 的实现方式它通过容器提供的API开发人员手动查找并获取所需要的依赖对象而不是将依赖关系委托给容器。通过容器提供的接口来获取所需要的对象实例从而实现对象之间的解耦。
2.1.3 优点分析
loC 是Spring框架的基石使用 loC 的好处在于 降低代码之间的耦合度 可维护性更好对象更易于扩展和重用 loC 容器管理对象简化开发的难度节省开发时间。
2.2 理解 Ioc
假如我们需要构造一辆汽车思路如下车需要依赖车身(FrameWork Class)车身需要依赖底盘Bottom Class 底盘需要依赖轮胎Tire Class 最终程序的实现代码如下
//轮胎类
public class Tire {//车轮大小为10public int size30;public void init(){System.out.println(sizesize);}
}
//底盘类依赖轮胎
public class Bottom{public void init(){Tire tirenew Tire();System.out.println(sizetire.size);}
}
//车身类依赖底盘
public class FrameWork {public void init(){Bottom bottomnew Bottom();bottom.init();}
}
//汽车类依赖车身
public class Car {public void init(){FrameWork frameWorknew FrameWork();frameWork.init();}
}
//测试程序输入轮胎的大小
public class Test {public static void main(String[] args) {Car carnew Car();car.init();}
}
程序输出结果如下 以上程序中轮胎的尺寸是固定的然而随着对汽车的需求量越来越高个性化需求也会越来越多这时候我们就需要加多种尺寸的轮胎那这个时候就要对上面的程序进行修改了修改后的代码如下所示
public class Tire {//车轮大小为10public int size30;public void init(){System.out.println(sizesize);}//添加带参构造方法方便对轮胎的大小进行设置public Tire(int size){this.sizesize;}
} public class Bottom{public void init(int size){Tire tirenew Tire(size);System.out.println(sizetire.size);}
} 修改后代码如下
public class Tire {//车轮大小为10public int size30;public void init(){System.out.println(sizesize);}public Tire(int size){this.sizesize;}
}
//底盘类依赖轮胎public class Bottom{public void init(int size){Tire tirenew Tire(size);System.out.println(sizetire.size);}
}
//车身类依赖底盘public class FrameWork {public void init(int size){Bottom bottomnew Bottom();bottom.init(size);}
}
//汽车类依赖车身public class Car {public void init(int size){FrameWork frameWorknew FrameWork();frameWork.init(size);}
}
//测试类代码public class Test {public static void main(String[] args) {//首先创建上级类对象Car carnew Car();car.init(30);}
} 以上程序的问题是当最底层代码改动之后整个调用链上的所有代码都需要修改强耦合。
解决方案
public class Tire {//车轮大小为10public int size30;public void init(){System.out.println(sizesize);}public Tire(int size){this.sizesize;}
}public class Bottom{private Tire tire;public Bottom(Tire tire){this.tiretire;}public void init(){tire.init();}
}public class FrameWork {private Bottom bottom;public FrameWork(Bottom bottom){this.bottombottom;}public void init(){bottom.init();}
}public class Car {private FrameWork frameWork;public Car(FrameWork frameWork){this.frameWorkframeWork;}public void init(){frameWork.init();}
}/*
模拟实现 loC容器控制对象*/public class Test {public static void main(String[] args) {Tire tirenew Tire(100);Bottom bottomnew Bottom(tire);FrameWork frameWorknew FrameWork(bottom);Car carnew Car(frameWork);car.init();}
} 在传统的代码中对象创建顺序是Car - Framework - Bottom - Tire 改进之后解耦的代码的对象创建顺序是Tire - Bottom - Framework - Car
在上面的程序中我们发现了一个规律通用程序的实现代码类的创建顺序是反的。改进后的控制权发生反转后不再是上级对象创建并控制下级对象了而是下级对象通过注入到当前对象下级的控制权不再由上级类控制。即使下级类发生任何变化当前类都是不受影响的这就是 loC 的设计思想。