过去两天我一直在阅读和练习依赖注入,但没有任何工作,突然我发现有一些框架需要依赖注入才能工作。 真的吗? 使我的项目依赖于某个框架不是一个坏习惯吗? 可以在不使用框架的情况下完成吗?
编辑:我是编程的新手,所以我不明白实现一个类和使用它的方法(我不需要一个框架)和使用依赖注入以及它有什么更好的区别编辑:这是一个我没有使用框架和不起作用的东西的例子TestNG @Factory annotation + not enough knowledge on Dependency Injection
答案 0 :(得分:5)
不,您不必使用框架:
当然你也可以使用框架,有人说你可以使用Spring Framework
并使用他们的注释。在这里你有一个教程:
答案 1 :(得分:2)
您不必使用框架,但它可以帮助您编写更清晰的代码。例如,如果要在不使用框架的情况下将模拟注入类中,则需要通过添加getter / setter,将其传递给构造函数或使用公共变量来实现。
public class AClassToTest{
private A aDependentClass;
public void aMethodToTest(){
int i = aDependentClass.someDependentMethod();
..
..
}
}
在上面的代码中,aMethodToTest()
取决于aDependentClass.someDependentMethod()
返回的内容。这意味着您应该创建类A
的模拟并模拟someDependentMethod
返回的内容。这仍然可以在不使用框架的情况下实现,例如通过添加getter和setter,以便您可以在测试类中设置对象A:
@Test
public void testAMethodToTest(){
//here you must set the object A in your AClassToTest object
//Create a mock of A with desired values
//and set it using a setter
}
例如,如果您使用spring进行依赖注入,它将允许您使用它的@Autowire
表示法在其IOC容器中设置模拟对象。然后,您不需要为您的模拟对象设置setter / getter,这将为您提供更清晰的代码
答案 2 :(得分:0)
对于依赖注入 Guice 很棒(个人意见)。至少我发现它比Spring提供的方式更好。它也很轻巧。