欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring IOC的理解

程序员文章站 2022-04-16 08:47:15
1.什么是spring IOC IOC(Inversion of Control)即控制反转,在我们以往的编程中如果需要一个bean往往需要去手动去new一个出来。而spring帮我们解决了这个问题,在spring中我们只需要去定义bean,spring就会自动的帮我们实例化并管理Bean。而这些B ......

1.什么是spring ioc

ioc(inversion of control)即控制反转,在我们以往的编程中如果需要一个bean往往需要去手动去new一个出来。而spring帮我们解决了这个问题,在spring中我们只需要去定义bean,spring就会自动的帮我们实例化并管理bean。而这些bean就管理在spring容器中。

2.什么是spring 容器

相信在此之前各位小伙伴也看过一些spring容器先关的介绍,感觉很高端有没有....竟然可以自动的管理bean。其实spring容器只是有若干的map组成的。

3.与spring容器相关的组件:

(1). beandefinition(bean的定义)

举个例子:

①首先我们定义一个user类,并在xml文件中配置:

spring IOC的理解
spring IOC的理解

②启动bean容器我们看看beandefinition中有什么

spring IOC的理解

我们发现在xml文件中配置的属性与beandefinition相同,因此在spring中beandefinition用来表示我们配置的一个个<bean/>

(2)beandefinitionregistry(用来注册beandefinition的容器),这是一个接口,其实现类为defaultlistablebeanfactory。

spring IOC的理解

我们来看看defaultlistablebeanfactory的源码:

①其内含有一个concurrenthashmap用来存储bean的定义

spring IOC的理解

②registerbeandefinition方法用来讲我们的beandefinition注册到defaultlistablebeanfactory中

spring IOC的理解

(3)defaultsingletonbeanregistry:用来管理我们的单例bean

spring IOC的理解
spring IOC的理解

不难看出在这两个map中一个用来管理普通的单例bean,一个用来存储延迟加载的单例bean.

4.总结

     所以我们一般所指的spring容器包括三个map,其中defaultlistablebeanfactory中的map用来管理我们的beandefinition,而defaultsingletonbeanregistry中的map用来管理我们的单例bean。