我是否需要一个框架才能使用依赖注入?

时间:2013-08-12 11:17:29

标签: java dependency-injection

过去两天我一直在阅读和练习依赖注入,但没有任何工作,突然我发现有一些框架需要依赖注入才能工作。 真的吗? 使我的项目依赖于某个框架不是一个坏习惯吗? 可以在不使用框架的情况下完成吗?

编辑:我是编程的新手,所以我不明白实现一个类和使用它的方法(我不需要一个框架)和使用依赖注入以及它有什么更好的区别

编辑:这是一个我没有使用框架和不起作用的东西的例子TestNG @Factory annotation + not enough knowledge on Dependency Injection

3 个答案:

答案 0 :(得分:5)

不,您不必使用框架:

Dependency Injection

当然你也可以使用框架,有人说你可以使用Spring Framework并使用他们的注释。在这里你有一个教程:

Dependency Injection with the 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提供的方式更好。它也很轻巧。

https://code.google.com/p/google-guice/