IOC 容器

IOC 容器

引入问题:

  1. 谁负责创建组件?
  2. 谁负责根据依赖关系组装组件?
  3. 销毁时,如何按顺序正确销毁?

1. 原理

IoC又称为依赖注入(DI:Dependency Injection),它解决了一个最主要的问题:将组件的创建+配置与组件的使用相分离,并且,由IoC容器负责管理组件的生命周期。

  1. 无侵入容器

在设计上,Spring的IoC容器是一个高度可扩展的无侵入容器。所谓无侵入,是指应用程序的组件无需实现Spring的特定接口,或者说,组件根本不知道自己在Spring的容器中运行。这种无侵入的设计有以下好处:

  • 应用程序组件既可以在Spring的IoC容器中运行,也可以自己编写代码自行组装配置;

  • 测试的时候并不依赖Spring容器,可单独进行测试,大大提高了开发效率。

2. Spring 容器

  1. ApplicationContext
// 创建容器
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
// 获取 bean
UserService userService = context.getBean(UserService.class);
  1. BeanFactory
// 创建容器
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("application.xml"));
// 获取 bean
MailService mailService = factory.getBean(MailService.class);

BeanFactoryApplicationContext的区别在于,BeanFactory的实现是按需创建,即第一次获取Bean时才创建这个Bean,而ApplicationContext会一次性创建所有的Bean。实际上,ApplicationContext接口是从BeanFactory接口继承而来的,并且,ApplicationContext提供了一些额外的功能,包括国际化支持、事件和通知机制等

posted @ 2022-07-01 21:39  生活是很好玩的  阅读(195)  评论(0编辑  收藏  举报