【Spring框架学习2】DI 依赖注入

一、DI(依赖注入)介绍

依赖注入 (Dependency Injection,DI)是一种实现控制反转(Inversion of Control,IoC)的方式。它允许将一个或多个依赖(即服务)注入到对象中(即客户端)。降低了对象与具体实现之间的耦合度,提高了代码的可维护性和可用性。

在Spring框架中,依赖注入被广泛应用,例如:在Bean的配置中,可以通过构造函数 、setter方法 或者使用@Autowired等注解来实现依赖注入。

二、举个简单的例子说明

假设我们有一个Person类和一个Database类,Person类需要访问Database类来获取数据。在传统的实现中,Person类需要直接实例化Database类,这样就会导致Person类与Database类的紧密耦合。

使用依赖注入,我们可以在Person类中创建一个Database类的属性,并使用setter方法或者构造函数来实现注入。这样,当Person类需要访问数据库时,它只需要调用Database类的实例,而不需要关心这个实例是如何创建和管理的。

java 复制代码
interface Database {  
    void retrieveData();  
}  
  
class Person {  
    private Database db;  
  
    // 通过构造函数注入  
    public Person(Database db) {  
        this.db = db;  
    }  
  
    public void performAction() {  
        db.retrieveData();  
    }  
}  
  
class MySQLDatabase implements Database {  
    @Override  
    public void retrieveData() {  
        System.out.println("Retrieving data from MySQL database");  
    }  
}

在这个例子中,Person类通过构造函数注入了一个Database的实例。当Person的实例被创建时,它会自动调用构造函数并传入一个Database的实例。这样,我们就可以随时更换Database的实现,而不需要修改Person类的代码。

相关推荐
学长毕设9 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
CarIise10 小时前
SpringMVC 异常处理与拦截器
大数据·spring
知守观11 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
小小de风呀13 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
\光辉岁月/13 小时前
3.spring5-AOP
spring·代理模式·aop·spring5
李某学编程13 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
东华果汁哥14 小时前
【Spring AI 实战】从零开始调用大模型接口,构建 Java AI 应用
java·人工智能·spring
Song_RsHt14 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
~kiss~17 小时前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码17 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理