您现在的位置是:首页 >技术交流 >Spring IOC和DI网站首页技术交流

Spring IOC和DI

米粒宝的爸爸 2025-12-15 12:01:03
简介Spring IOC和DI

什么是IOC?

IoC(Inversion of Control,控制反转)是Spring框架的核心概念之一,它允许开发者将对象的创建和依赖关系的维护交给Spring容器来管理,而不是在代码中直接创建和配置对象。在Spring中,IoC主要通过XML配置或注解来实现。

注解(Annotations)是Java提供的一种为代码添加元数据的机制,Spring框架提供了丰富的注解来支持IoC容器的配置。使用注解可以极大地简化配置工作,使得代码更加简洁和易于维护。

什么是DI?

DI(Dependency Injection,依赖注入)是IoC(Inversion of Control,控制反转)的一种实现方式。在DI中,对象的依赖关系不是由对象本身在内部创建和管理,而是由外部容器(如Spring容器)在创建对象时注入。这种方式有助于降低对象之间的耦合度,提高代码的可测试性和可维护性。

DI详解

三种注入方法

例如

IOC注解概述

注意:前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
该注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。

在Spring框架中,与IoC相关的常用注解包括但不限于以下几种:

  1. @Autowired:用于自动注入依赖对象。它可以应用于字段、setter方法或构造器上。Spring容器会在创建bean时,自动寻找匹配的bean注入到被@Autowired标注的字段或方法中。

  2. @Qualifier:与@Autowired配合使用,用于指定注入bean的名称。当Spring容器中存在多个相同类型的bean时,可以使用@Qualifier来指定注入哪一个bean。

  3. @Component:这是一个通用的注解,用于标注一个类为Spring容器中的一个组件(bean)。被@Component标注的类会被Spring容器自动扫描并注册为bean。

  4. @Repository:用于标注DAO(Data Access Object)组件。它继承自@Component,除了具有@Component的功能外,@Repository还提供了对异常转译的支持,能够将DAO层的特定异常转换为Spring的通用数据访问异常。

  5. @Service:用于标注服务层(Service Layer)组件。它同样继承自@Component,用于标注业务逻辑层的组件。

  6. @Controller:用于标注控制层(Controller Layer)组件。在Spring MVC框架中,@Controller注解用于标注控制器组件,使得该类能够处理HTTP请求。

  7. @Scope:用于指定bean的作用域。Spring支持多种作用域,包括单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等。

  8. @Bean:在配置类中使用,用于定义一个bean。通过@Bean注解的方法,可以显式地声明和配置一个bean,并返回该bean的实例。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。