05springboot的IOC和DI学习

1.解释IOC的理论

IOC(控制反转)的核心概念

IOC是一种设计原则,将传统程序中的控制权从代码内部转移到外部容器或框架。简单来说,程序不再直接创建和管理依赖对象,而是由外部系统负责注入。

传统流程与IOC对比

传统方式中,对象A需要对象B时会主动创建B的实例。控制反转后,对象A只需声明需要B,由第三方(如IOC容器)在运行时提供B的实例。

实现方式

依赖注入(DI):通过构造函数、属性或接口注入依赖对象。例如:

// 传统方式
class UserService {
    private UserRepository repo = new UserRepository();
}

// IOC方式
class UserService {
    private UserRepository repo;
    // 通过构造函数注入
    public UserService(UserRepository repo) {
        this.repo = repo;
    }
}

主要优点

降低代码耦合度,提高可测试性和模块化。组件只需关注自身逻辑,无需知道依赖的具体实现。

常见框架

Spring(Java)、Autofac(.NET)、Dagger(Android)等均实现了IOC容器,自动管理对象的创建和生命周期。### IOC(控制反转)的核心概念

IOC是一种设计原则,将传统程序中的控制权从代码内部转移到外部容器或框架。简单来说,程序不再直接创建和管理依赖对象,而是由外部系统负责注入。

2.解释DI的理论

DI的理论核心

DI(依赖注入)是一种设计模式,核心思想是将对象的依赖关系从内部创建改为外部传入,降低代码耦合度。类似于“你需要灯泡时不用自己造,直接买现成的插上就行”。

关键概念

  • 依赖:一个对象正常运行所需的其他对象(如数据库连接、配置文件等)
  • 注入:通过构造函数、属性或接口等方式从外部提供这些依赖

三种实现方式

  1. 构造函数注入
    依赖项通过类的构造函数传入,最推荐的方式:

    class UserService {
      private Database db;
      UserService(Database db) { this.db = db; }
    }
    
  2. 属性注入
    通过公开属性赋值,灵活性高但易被修改:

    class Logger {
      public IFileWriter Writer { get; set; }
    }
    
  3. 接口注入
    依赖项通过专用接口方法传入,较少使用

实际优势

  • 易测试:可以轻松替换为模拟对象
  • 易维护:修改依赖时不用改动大量代码
  • 可扩展:新功能通过添加新实现即可

3.对案例14的理解

3.1代码结构
在这里插入图片描述
3.2运行结果
在这里插入图片描述
3.3.自己的理解
IOC 是 “让别人帮你做事” 的思想(把对象管理交给容器),DI 是 “别人帮你做事的具体方法”(容器主动给对象塞依赖)。两者结合起来,写代码时就不用再操心对象的创建和依赖问题,能更专注于真正要实现的功能啦!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值