Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

1.背景介绍

Spring Framework是一个开源的JavaJava EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。最初由Rod JohnsonJuergen Hoeller等开发。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

spring最核心的概念就是IOC和AOP

2.知识剖析

IoC是什么

  Ioc—Inversion of Control,即控制反转,不是什么技术,而是一种设计思想。Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。


                           

通过控制反转客户端不需要再主动创建对象,只需要通过IOC,由IOC去创建就可以了

由应用程序创建对象转变为由IOC容器来创建,用于控制创建对象的主体发生了改变,这是控制反转

应用程序需要的对象信息由IOC容器创建后注入,也就是说依赖于容器来注入,这是依赖注入

表达的是一个东西,只是描述的角度不同。

IOC,从容器的角度出发,容器反向控制应用程序对象的创建。

DI,从应用程序的角度出发,应用程序需要依赖容器注入对象。


3.常见问题

1)IOCDI的区别

2) xml配置注入方式

4.解决方案

写清楚常见问题的解决方案

1)IOCDI的区别

理解好IoC的关键是:谁控制谁,控制什么了,为何是反转,在哪些方面反转了。

谁控制谁,控制什么了

传统JavaSE程序设计,我们在对象内部直接通过new进行创建对象,是程序主动去创建依赖对象,而IoC有一个专门的容器来创建这些对象,即由IoC容器来创建这些对象的创建。谁控制谁?当然是由IoC容器控制了对象;控制了什么?那就主要是控制了外部资源获取(包括对象、文件等)。

为何是反转,在哪些方面反转了

有反转就有正转。传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转。而反转则是由容器来帮忙创建及注入依赖对象。为何是反转?因为容器帮我们查找和注入依赖对象,对象只是被动的接受依赖对象,所以是反转。哪些方面反转了?依赖对象的获取反转了。

理解DI的关键:谁依赖谁,为什么需要依赖,谁注入谁,注入了什么

1.谁依赖谁?当然是应用程序依赖于IoC容器。 
2.
为什么需要依赖?应用程序需要IoC容器来提供对象需要的外部资源(包括对象,文件等)。 
3.
谁注入谁?很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象。 
4.
注入了什么?就是注入某个对象所需要的外部资源(包括对象、资源、变量数据)

2) xml配置注入方式

·         1.Set注入

·         2.构造器注入

·         3.静态工厂的方法注入

·         4.实例工厂的方法注入

5.编码实战


6.扩展思考

7.参考文献

https://www.cnblogs.com/xdp-gacl/p/4249939.html

https://blog.csdn.net/c513063286/article/details/71516886

https://blog.csdn.net/suzunshou/article/details/47149895

8.更多讨论

(1) Bean一般是在什么时候创建?

一般创建是在程序启动的时候就创建了。

(2)注入bean的方式 

一般有:

setter注入    

构造器注入     

接口注入  

注解注入

(3)bean的实例化方式

1.setter 方法

2. 构造函数

3. 静态工厂

4. 实例工厂

(4)配置文件里的ref=“”和value=“”分别怎么用

value:用来直接指定一个常量值;

ref:用于指定对Bean工厂中某个Bean实例的引用




猜你喜欢

转载自blog.csdn.net/weixin_41776493/article/details/80035932