当前位置 博文首页 > 俺叫啥好嘞的博客:依赖注入 和 new 一个实例有什么区别

    俺叫啥好嘞的博客:依赖注入 和 new 一个实例有什么区别

    作者:[db:作者] 时间:2021-09-14 16:26

    问:依赖注入 和 new 一个实例有什么区别吗?

    今天刚看了一下 依赖注入 的概念,大致就是说如果一个服务类 A 需要另外一个服务类 B 中的方法,那就直接将这个 B 这个类注入到 A 这个类中,但是我一想,这不就是在 A 类中 new 一个 B 类吗??或者可以直接在 A 类的构造器中 new 一个 B 类,然后 A 类中的所有方法都可以使用这个属性。依赖注入和这个有啥区别吗??

    参考答案:
    你想的是类。其实呢,想到方法你应该想到接口,A类调用B接口的方法,那么A类就需要一个B接口实现类的实例。假设B有B1,B2两个实现,既然B1,B2都实现了B的方法,那么方法效果上大致应该是一样的,可能会有细节差别,性能差别这种。那么同样的功能需求B1也能实现,B2也能实现。这时候就要做选择了,选B1的时候,需要new一个B1实例,选B2的时候,需要new一个B2实例。但是总体上看,其实A只需要一个B。依赖注入呢,就是我通过applicationContext来把所有的对象管理起来。A需要一个B,具体是B1还是B2或者其他实现了B接口的类对象,不重要。那具体A的对象是哪个B的实现类呢,就是你配置的那个,也就是注入的那个。

    你想的是类。其实呢,想到方法你应该想到接口,A类调用B接口的方法,那么A类就需要一个B接口实现类的实例。假设B有B1,B2两个实现,既然B1,B2都实现了B的方法,那么方法效果上大致应该是一样的,可能会有细节差别,性能差别这种。那么同样的功能需求B1也能实现,B2也能实现。这时候就要做选择了,选B1的时候,需要new一个B1实例,选B2的时候,需要new一个B2实例。但是总体上看,其实A只需要一个B。依赖注入呢,就是我通过applicationContext来把所有的对象管理起来。A需要一个B,具体是B1还是B2或者其他实现了B接口的类对象,不重要。那具体A的对象是哪个B的实现类呢,就是你配置的那个,也就是注入的那个。
    https://www.zhihu.com/question/425602814/answer/1533143786

    cs