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

    xiaoxiao2023-09-30  165


    系列教程

    Spring 框架介绍Spring 框架模块Spring开发环境搭建(Eclipse)创建一个简单的Spring应用Spring 控制反转容器(Inversion of Control – IOC)理解依赖注入(DI – Dependency Injection)Bean XML 配置(1)- 通过XML配置加载BeanBean XML 配置(2)- Bean作用域与生命周期回调方法配置Bean XML 配置(3)- 依赖注入配置Bean XML 配置(4)- 自动装配Bean 注解(Annotation)配置(1)- 通过注解加载BeanBean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置Bean 注解(Annotation)配置(3)- 依赖注入配置Bean Java配置Spring 面向切面编程(AOP)Spring 事件(1)- 内置事件Spring 事件(2)- 自定义事件

    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容器有两种类型:

    BeanFactoryApplicationContext

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

    Bean的配置方式

    Bean的配置信息里包含了:

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

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

    bean配置方式有3种:

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

    后续将会详细介绍。

    最新回复(0)