Spring IoC 容器详解 [Spring][IoC 控制反转][BeanFactory][ApplicationContext]

时间:2020-05-08 23:01:51   收藏:0   阅读:90

您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

1 Spring IoC 概述

Spring IoC,全称 Spring Inversion of Control ,控制反转。

IoC(控制反转) 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控制权发生了反转,这就是 Spring 的 IoC 思想。

简单理解,IoC(控制反转)就是控制权的转移,即把创建(new)对象的权利,反转给第三方Spring 框架去创建(new)。也就是把对象的创建的权利及对象的生命周期的管理过程交由Spring 框架来处理,从此在开发过程中不再需要关注对象的创建和生命周期的管理,而是在需要时由 Spring 框架提供,这个由 Spring 框架管理对象创建和生命周期的机制称之为控制反转。而在创建对象的过程中 Spring 可以依据配置对对象的属性进行设置,这个过称之为依赖注入,也即 DI。

示意如下所示:

# 以前

User user = new User();  // 由程序员控制 new 对象
# 现在:

现在 Spring 容器来创建对象
User user = spring容器.get对象("容器中的唯一对象Id");

2 Spring 提供两种 IoC 容器

2.1 BeanFactory

BeanFactory 是基础类型的 IoC 容器,它由 org.springframework.beans.facytory.BeanFactory 接口定义,并提供了完整的 IoC 服务支持。

简单理解,BeanFactory 就是一个管理 Bean 的工厂,它主要负责初始化各种 Bean,并调用它们的生命周期方法。

BeanFactory 接口有多个实现类,最常见的如下所示:

创建 BeanFactory 实例时,需要提供 Spring 所管理容器的详细配置信息,这些信息通常采用 XML 文件形式管理。

其加载配置信息的代码具体如下所示:

BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("D://applicationContext.xml"));

2.2 ApplicationContext

ApplicationContext 接口的全路径为 org.springframework.context.ApplicationContext,它不仅提供了 BeanFactory 的所有功能,还添加了对 i18n(国际化)、资源访问、事件传播等方面的良好支持。

ApplicationContext 是 BeanFactory 的子接口,也被称为应用上下文。

ApplicationContext 接口有两个常用的实现类,具体如下所示:

使用 Spring 框架,当要创建 ApplicationContext 容器时,可以实例化任何一个类(ClassPathXmlApplicationContext 或 FileSystemXmlApplicationContext)。建议如下所示:

3 BeanFactory 和 ApplicationContext 的异同

介绍到这里,相信大家心里都有一个“理想对象”了吧?
那就是 ApplicationContext,在日常开发中通常选择使用的都是这个接口,只有在系统资源较少时,才考虑一下 BeanFactory 哦。

4 文章其他地址

4.1 微信公众号:码农阿杰

4.2 CSDN 博客

5 参考资料

5.1 spring

5.2 Artifact Repository Browser

5.3 Apache Commons

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!