9

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

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

编辑:这是我没有使用框架的一个例子,而且事情不起作用 TestNG @Factory 注释 + 对依赖注入的了解不足

4

3 回答 3

6

不,您不必使用框架:

依赖注入

当然,您也可以使用框架,正如有人所说,您可以使用Spring Framework和使用他们的注释。这里有一个教程:

使用 Spring 框架进行依赖注入

于 2013-08-12T11:24:11.743 回答
3

您不必使用框架,但它会帮助您编写更简洁的代码。例如,如果您想在不使用框架的情况下将模拟注入到类中,则需要通过添加 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,这将为您提供更清晰的代码

于 2013-08-12T11:37:02.910 回答
0

对于依赖注入, Guice很棒(个人意见)。至少我发现它比 Spring 提供的要好得多。它也非常轻巧。

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

于 2013-08-12T11:23:31.693 回答