其他分享
首页 > 其他分享> > 学习Spring核心原理---IoC思想

学习Spring核心原理---IoC思想

作者:互联网

控制反转(Inversion of Control)

正常的情况下,比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象。通过控制反转,把对象的创建不是通过new方式实现,而是交给Spring配置创建类对象。控制反转是一种在软件工程中解耦合的思想,调用类只依赖接口,而不依赖具体的实现类,减少了耦合。控制权交给了容器,在运行的时候才由容器决定将具体的实现动态的“注入”到调用类的对象中。

依赖注入(Dependency Injection)

它提供一种机制,将需要依赖对象的引用传递给被依赖对象

Spring IOC 依赖注入方式:构造方法注入;setter方法注入;接口注入;

构造方法注入:顾名思义,构造方法注入,就是被注入对象可以通过在其构造方法中声明依赖对象的参数列表, 让外部(通常是IoC容器)知道它需要哪些依赖对象。IoC Service Provider会检查被注入对象的构造方法,取得它所需要的依赖对象列表,进而为其注入相应的对象。同一个对象是不可能被构造两次的,因此,被注入对象的构造乃至其整个生命周期, 应该是由IoC Service Provider来管理的。

构造方法注入方式比较直观,对象被构造完成后,即进入就绪状态,可以马上使用。

setter方法注入:对于JavaBean对象来说,通常会通过setXXX()和getXXX()方法来访问对应属性。这些setXXX()方 法统称为setter方法,getXXX()当然就称为getter方法。通过setter方法,可以更改相应的对象属性,通 过getter方法,可以获得相应属性的状态。所以,当前对象只要为其依赖对象所对应的属性添加setter 方法,就可以通过setter方法将相应的依赖对象设置到被注入对象中。

接口注入:相对于前两种注入方式来说,接口注入没有那么简单明了。被注入对象如果想要IoC Service Provider为其注入依赖对象,就必须实现某个接口。这个接口提供一个方法,用来为其注入依赖对象。 IoC Service Provider最终通过这些接口来了解应该为被注入对象注入什么依赖对象。

注入方式比较
Spring 容器

容器类型:Spring提供了两种容器类型:BeanFactory和ApplicationContext。

BeanFactory:基础类型IoC容器,提供完整的IoC服务支持。如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需 要的资源有限。对于资源有限,并且功能要求不是很严格的场景,BeanFactory是比较合适的 IoC容器选择。

ApplicationContext:ApplicationContext在BeanFactory的基础上构建,是相对比较高级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级特性,比如事件发布、国际化信息支持等。相对于BeanFactory来 说,ApplicationContext要求更多的系统资源,同时,因为在启动时就完成所有初始化,容器启动时间较之BeanFactory也会长一些。在那些系统资源充足,并且要求更多功能的场景中, ApplicationContext类型的容器是比较合适的选择。

总结

image-20220605132906658

标签:容器,依赖,构造方法,对象,Spring,---,setter,IoC,注入
来源: https://www.cnblogs.com/crstly/p/16345379.html