首页

【java核心面试知识整理(架构师)】Spring 原理 之IOC容器实现

标签:ioc     发布时间:2023-01-02   

阅读《java核心面试知识整理(架构师)》第6章节Spring 原理 之6.1.7.3. IOC 容器实现 - BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。

【java核心面试知识整理(架构师)】Spring 原理 之IOC容器实现

1. Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,@b@它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册@b@BeanDefinition 对象的方法。@b@1.1..1.1.2 BeanFactory 顶层接口@b@@b@2. 位于类结构树的顶端 ,它最主要的方法就是 getBean(String beanName),该方法从容器中@b@返回特定名称的 Bean,BeanFactory 的功能通过其他的接口得到不断扩展:@b@1.1..1.1.3 ListableBeanFactory@b@@b@3. 该接口定义了访问容器中 Bean 基本信息的若干方法,如查看 Bean 的个数、获取某一类型@b@Bean 的配置名、查看容器中是否包括某一 Bean 等方法;@b@1.1..1.1.4 HierarchicalBeanFactory 父子级联@b@@b@4. 父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器; 通过@b@HierarchicalBeanFactory 接口, Spring 的 IoC 容器可以建立父子层级关联的容器体系,子@b@容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。Spring 使用父子容器实@b@现了很多功能,比如在 Spring MVC 中,展现层 Bean 位于一个子容器中,而业务层和持久@b@层的 Bean 位于父容器中。这样,展现层 Bean 就可以引用业务层和持久层的 Bean,而业务@b@层和持久层的 Bean 则看不到展现层的 Bean。@b@1.1..1.1.5 ConfigurableBeanFactory@b@@b@5. 是一个重要的接口,增强了 IoC 容器的可定制性,它定义了设置类装载器、属性编辑器、容@b@器初始化后置处理器等方法;@b@13/04/2018 Page 122 of 283@b@1.1..1.1.6 AutowireCapableBeanFactory 自动装配@b@@b@6. 定义了将容器中的 Bean 按某种规则(如按名字匹配、按类型匹配等)进行自动装配的方法;@b@1.1..1.1.7 SingletonBeanRegistry 运行期间注册单例 Bean@b@@b@7. 定义了允许在运行期间向容器注册单实例 Bean 的方法;对于单实例( singleton)的 Bean @b@来说,BeanFactory 会缓存 Bean 实例,所以第二次使用 getBean() 获取 Bean 时将直接从@b@IoC 容器的缓存中获取 Bean 实例。Spring 在 DefaultSingletonBeanRegistry 类中提供了一@b@个用于缓存单实例 Bean 的缓存器,它是一个用 HashMap 实现的缓存器,单实例的 Bean 以@b@beanName 为键保存在这个 HashMap 中。@b@1.1..1.1.8 依赖日志框框@b@@b@8. 在初始化 BeanFactory 时,必须为其提供一种日志框架,比如使用 Log4J, 即在类路径下提@b@供 Log4J 配置文件,这样启动 Spring 容器才不会报错。
  • ◆ 相关内容