如何对局部变量使用spring依赖注入?

时间:2012-09-15 17:21:03

标签: spring dependency-injection

我发现了许多关于类成员变量的setter依赖注入的例子,但是发现很难找到关于使用spring的方法中局部变量的setter依赖注入的任何例子。

我该怎么做?

1 个答案:

答案 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或使字段包可见。因此,同一个包中的单元测试可以访问该字段并提供模拟。