我发现了很多关于类成员变量的setter依赖注入(inject)的例子,但是发现很难找到任何关于使用spring在方法内部对局部变量进行setter依赖注入(inject)的例子。
我该怎么做?
最佳答案
您给出的 TextEditor 类使用的 SpellChecker 示例在能够进行依赖项注入(inject)之前可能如下所示。您正在使用 SpellChecker 类的方法内创建该类的新实例。
public class TextEditor {
public void doSomething() {
new SpellChecker().checkSpelling();
}
}
如果您想解耦代码并能够通过用于单元测试目的的模拟或依赖注入(inject)容器提供的另一个实现来替换 SpellChecker,您必须更改类并提供一个可以注入(inject)该实例的字段.
public class TextEditor {
@Autowired
private SpellChecker spellChecker;
public void doSomething() {
spellChecker.checkSpelling();
}
}
由于这仍然不容易测试,因为您需要使用反射将模拟注入(inject)到该私有(private)字段中,您可以提供一个 Setter 或通过从字段中删除修饰符 private 来使字段包可见。因此,同一包中的单元测试可以访问该字段并提供模拟。
关于spring - 如何使用spring依赖注入(inject)局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439512/