我发现了许多关于类成员变量的setter依赖注入的例子,但是发现很难找到关于使用spring的方法中局部变量的setter依赖注入的任何例子。
我该怎么做?
答案 0 :(得分:1)
TextEditor类使用的SpellChecker的给定示例在能够进行依赖注入之前可能看起来像这样。您正在使用它的方法中创建SpellChecker类的新实例。
public class TextEditor {
public void doSomething() {
new SpellChecker().checkSpelling();
}
}
如果您想要解耦代码并且能够通过模拟替换SpellChecker以进行单元测试或通过您的依赖注入容器提供的其他实现,则必须更改类并提供可以注入此实例的字段
public class TextEditor {
@Autowired
private SpellChecker spellChecker;
public void doSomething() {
spellChecker.checkSpelling();
}
}
由于您仍然不容易测试,因为您需要使用Reflection将模拟注入到该私有字段中,您可以通过从字段中删除修饰符private来提供Setter或使字段包可见。因此,同一个包中的单元测试可以访问该字段并提供模拟。