Spring 控制反转容器(Inversion of Control – IOC)

时间:2019-10-09
本文章向大家介绍Spring 控制反转容器(Inversion of Control – IOC),主要包括Spring 控制反转容器(Inversion of Control – IOC)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

系列教程


IoC(Inversion of Control )代表控制反转,Spring框架本质上是一个IoC容器。

什么是控制反转?

Java程序中,Java类是基本的代码组织单位。当某个类要使用另一个类时,自然的做法是创建另一个类的对象,然后调用该对象的方法。这样做在程序规模较小时没什么问题,但当程序规模很大时这些类之间过于紧密的耦合会导致后续开发维护困难。例如要替换其中某个类,就不得不修改所有涉及这个类的代码。

控制反转(Inversion of Control / IoC)与依赖注入(Dependency Injection / DI)就是为解决这个问题。上面提到类里面创建另外一个类实例会造成耦合太紧,Spring框架就把创建类实例的行为从类中拿出来放到Spring框架里去做,类与类之间创建关系就没有了。

本来由类控制其所依赖的另一个类的实例创建,现在把创建动作放到Spring框架里了,由框架控制所有类的实例创建,这就是“控制反转”。

框架创建了类所依赖的对象,然后把这些对象传给(注入)类,这就是“依赖注入”。

所以可以看到,Spring框架中控制反转(Inversion of Control / IoC)与依赖注入(Dependency Injection / DI)实际上讲的是同一个事情,只是角度不同。

IoC容器执行的主要任务:

  • 创建bean实例
  • 根据配置文件装配bean
  • 为bean设置初始化参数
  • 管理bean的生命周期

什么是Bean?

Bean是Java中基本的代码重用单位,是遵守一定约定的Java类。

在Spring中,Bean就是普通的Java类,由Spring IoC容器实例化、组装、管理。

IoC容器根据XML文件、Java注释或Java config文件中的配置信息创建、装配、管理bean(普通Java类),spring应用只需声明一下所需的类(往往是父类,以便达到松耦合的目的)就可直接使用这些bean的功能。如图所示:

IoC容器有两种类型:

  • BeanFactory
  • ApplicationContext

ApplicationContext接口基于BeanFactory接口,比BeanFactory接口更强大,推荐使用ApplicationContext。后面会有详细介绍。

Bean的配置方式

Bean的配置信息里包含了:

  1. 如何创建bean
  2. bean的生命周期回调方法配置
  3. bean的依赖关系

Spring容器利用这些信息装配Bean。

bean配置方式有3种:

  • XML配置 - 使用XML文件来配置bean
  • 注解配置 - 使用@Service@Component注解配置bean
  • Java配置 - 从Spring 3.0开始,可以使用java程序配置bean,java配置用到的主要注解是:@Configuration@ComponentScan@Bean

后续将会详细介绍。

原文地址:https://www.cnblogs.com/haibianren/p/11642310.html