spring中的依赖注入和依赖发现啥区别?

        在Spring框架中,依赖注入(Dependency Injection, DI)和依赖发现(Dependency Lookup)是两个不同的概念,它们都是实现控制反转(Inversion of Control, IoC)的方式,但操作机制和使用场景有所不同:
依赖注入 (Dependency Injection)
        1、定义:依赖注入是一种设计模式,它允许我们去除硬编码的依赖关系,并让外部实体(如Spring容器)来负责创建对象的依赖关系并注入到需要它们的对象中。这意味着对象不需要自己寻找依赖,而是依赖被传递给它们。
        2、特点:
             透明性:对象的使用者不需要知道依赖是如何被创建和管理的。
             可测试性:便于单元测试,因为依赖可以轻松替换为模拟对象。
             灵活性:更改依赖关系只需修改配置,无需修改代码。
             实现方式:可以通过构造器注入、setter方法注入或字段注入来实现。
依赖发现 (Dependency Lookup)
        1、定义:依赖发现是指组件在运行时主动查找并获取其依赖的过程。在Spring中,这通常意味着使用如ApplicationContext的API来查找bean。
        2、特点:
             主动性:与依赖注入的被动接收不同,依赖发现要求组件主动查找依赖。
             灵活性:在某些动态场景下,可能需要在运行时决定依赖,这时依赖发现提供了灵活性。
             复杂性:增加了代码的复杂度,因为组件需要知道如何查找依赖,这可能违反了单一职责原则。
             实现方式:通过ApplicationContext.getBean()方法来查找并获取Bean实例。
总结:
       依赖注入是Spring推荐的主要依赖管理方式,因为它促进了松耦合、易于测试和维护的代码结构。而依赖发现虽然提供了运行时的灵活性,但通常不建议常规使用,因为它违背了IoC的基本原则,即组件不应该负责查找它们的依赖。在大多数情况下,依赖注入能满足应用的需求,并保持代码的清晰和可维护性。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值