Spring IoC容器
1. Spring的核心模块
-
IoC反转控制
指把创建对象交给Spring进行管理,即反转资源获取方向,把自己创建资源、向环境提供资源的方式变为框架进行创建资源,直接使用。 -
AOP面向切面编程
AOP用来封装多个类的公共行为,将那些与业务无关的却为业务模块共同调用的逻辑封装起来,减少系统的重复代码。
2。 什么是IoC、IoC容器和依赖注入
-
IoC
IoC(Inversion of Control)即控制反转是一种编程思想。IoC将对象的创建和管理交给框架来完成,而不是由开发人员手动创建和管理。 -
IoC容器
- IoC容器是实现IoC思想的一种技术手段和工具。
- IoC容器能够自动扫描应用程序中的对象,进行实例化,并自动注入其所需的依赖对象。Spring通过IoC容器来管理所有的Java对象的实例化和初始化,控制着对象与对象之间的依赖关系。
-
依赖注入DI
- DI(Dependency Injection):即依赖注入,实现了控制反转思想,是指Spring创建对象的过程中,将对象依赖属性通过配置进行注入。DI是IoC的一种具体实现。
- Bean管理:指Bean对象的创建,以及Bean对象中属性的赋值。
3. IoC容器是如何实现的
Spring中的IoC容器主要通过实现BeanFactory接口和ApplicationContext接口实现。
Spring框架中的IoC容器是其核心组件之一,它负责管理对象的生命周期以及依赖关系。以下是Spring中IoC容器的实现原理:
-
BeanFactory接口:这是Spring IoC容器的最底层接口,提供了IoC容器最基本的功能,比如实例化对象、获取对象等。他说Spring容器的基础,为具体的IoC容器实现提供了规范。
-
ApplicationContext接口:这是BeanFactory的子接口。代表了一个更高级的IoC容器。它除了提供BeanFactory的功能外,还提供了更多面向应用的功能,比如支持国际化、事件传播等。在Spring应用中,Application Context是最常用的容器形式。
-
依赖注入:Spring IoC容器通过依赖注入机制将对象的创建和管理权交给了容器。开发人员只需要在配置文件中声明对象及其依赖关系,容器会自动创建对象并注入依赖。这使得对象之间的关系更加松散,便于维护和测试。
-
三级缓存:为了提高性能,Spring IoC容器使用了三级缓存机制。其中,singletonObjects用于存放完全创建好的Bean对象,整个Bean的生命周期从创建、使用到销毁都由容器管理。
-
AOP支持:除了IoC,Spring还提供了面向切面编程AOP的支持,这允许开发者在不修改源代码的情况下增强功能,进一步促进了代码的解耦和功能的模块化。
-
方便集成:Spring IoC容器还提供了与其他框架整合的便利性,如数据库事务操作、API开发难度降低等,使得企业应用开发更加高效。
总体来说,Spring中的IoC容器是通过实现BeanFactory和ApplicationContext接口,结合依赖注入、缓存机制、AOP等功能,为应用程序提供了一个强大的、可扩展的、易于测试和维护的对象管理环境。
ApplicationContext的主要实现类
类型 | 说明 |
---|---|
AnnotationConfigApplicationContext | 使用注解方式构架IoC容器 |
ClassPathXmlApplicationContext | 使用Xml配置文件方式构架Spring IoC容器 |