Java面试题集:Spring常见面试问题及答案(2)

Resource 定位:我们一般使用外部资源来描述 Bean 对象,所以 IOC 容器第一步就是需要定位 Resource 外部资源 。Resource 的定位其实就是 BeanDefinition 的资源定位,它是由 ResourceLoader 通过统一的 Resource 接口来完成的,这个 Resource 对各种形式的 BeanDefinition 的使用都提供了统一接口 。

载入:第二个过程就是 BeanDefinition 的载入 ,BeanDefinitionReader 读取 , 解析 Resource 定位的资源,也就是将用户定义好的 Bean 表示成 IOC 容器的内部数据结构也就是 BeanDefinition, 在 IOC 容器内部维护着一个 BeanDefinition Map 的数据结构,通过这样的数据结构, IOC 容器能够对 Bean 进行更好的管理 。 在配置文件中每一个都对应着一个 BeanDefinition 对象 。

注册:第三个过程则是注册,即向 IOC 容器注册这些 BeanDefinition ,这个过程是通过 BeanDefinitionRegistery 接口来实现的 。

17 说说 BeanFactory 和 ApplicationContext 的区别? 什么是延迟实例化,它的优缺点是什么?

BeanFactory 是 Spring 里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和获取对象的功能 。

两者装载 bean 的区别

BeanFactory :在启动时不会去实例化 Bean ,只有从容器中获取 Bean 时才会去实例化。

ApplicationContext :在启动的时候就把所有的 Bean 全部实例化了 。 它还可以为 Bean 配置 lazy-init=true 来让 Bean 延迟实例化。

延迟实例化

优点: 应用启动时占用资源很少,对资源要求较高的应用,比较有优势。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ed81c9160537087a22d58316b2782c90.html