Spring IOC

本文介绍了IoC(InversionofControl)在面向对象编程中的作用,包括降低耦合度的方法,以及Spring框架中的依赖注入和依赖查找实现。同时探讨了SpringIoC容器的工作原理和面试题中的相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOC (Inversion of Control) 控制反转,是一种设计思想,是面向对象编程中的一种设计原则,用来降低程序的耦合度。

IoC指将对象的控制权交给”第三方“,由第三方来负责管理对象的生命周期对象间的依赖关系

【IoC的起源】

早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了?”这个问题。他总结出是依赖对象的获得被反转了,因为大多数应用程序都是由两个或是更多的类通过彼此的合作来实现企业逻辑,这使得每个对象都需要获取与其合作的对象(也就是它所依赖的对象)的引用。如果这个获取过程要靠自身实现,那么这将导致代码高度耦合并且难以维护和调试。

IoC的实现方式有依赖注入和依赖查找。

  • DI (Dependency Injection) 依赖注入,容器负责组件的装配,把符合依赖关系的对象通过JavaBean属性(set注入)或者构造函数(构造器注入)传递给需要的对象。

依赖注入常见的注入方式有两种:set注入和构造器注入

依赖注入可以通过配置指定组件,也可以自动的选择要装配的组件

Spring的bean标签内可以嵌套property或constructor-arg来注入属性

  • DL(Dependency Lookup) 依赖查找:组件使用容器提供的API来查找依赖的对象

Spring提供 getBean() 方法来查找Bean

Spring底层使用反射+工厂模式实现IoC,提供了两种实现方式:

  • BeanFactory

    IoC容器的基本实现,是Spring内部使用的接口,不提供给开发人员使用。

  • ApplicationContext

    BeanFactory的子接口,提供了更多、更强大的功能,一般由开发人员使用。

    ApplicationContext的主要实现类:

    • FileSystemXmlApplicationContext

    • ClassPathXmlApplicationContext

    • AnnotationConfigApplicationContext

【面试题】说一下对Spring IOC的理解

  • IoC的概念

  • IoC的实现

【思考】

  1. IoC与IoC容器

    IoC是一种设计思想,IoC的具体实现就是IoC容器,IoC容器存储由Spring创建/管理的Bean,以Spring为例,IoC容器就是 singletonObjects:Map<String,Object>

  2. 依赖注入与自动装配

    依赖注入是IoC是一种实现方式,由容器负责组件的装配,这种装配是可以通过配置来控制的,如bean标签中嵌套property或constructor。而自动装配,不需要这种配置,强调是自动化的装配。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值