Spring有两种DI(Dependency Injection)类型:构造函数DI和Setter DI。
基于构造函数的DI固定了注入依赖项的顺序。而基于Setter的DI则没有这样的要求。
Setter DI帮助我们在需要时才注入依赖项,而不是在构建对象时就需要注入它们。
我并没有看到其他显著的区别,因为两种类型的Spring DI提供了相同的功能- 无论是setter DI还是constructor DI都会在代码启动时注入依赖项。尽管构造函数DI通过构造函数完成,而Setter DI将在构建对象后通过一个Setter进行注入,但从开发人员的角度来看,在性能等方面并没有区别。 它们都提供了指定注入依赖项顺序的手段。
我寻找一种场景,在这种场景下,一种方法比另一种方法具有明显优势,或者其中一种类型完全无法使用。