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

Do I need a framework in order to use Dependency Injection?

本问题已经有最佳答案,请猛点这里访问。

在过去的两天里,我一直在阅读和练习依赖注入,但没有解决任何问题,我突然发现,为了使依赖注入发挥作用,需要一些框架。是真的吗?让我的项目依赖于某个框架不是一个坏习惯吗?不使用框架就可以做到吗?

编辑:我对编程很陌生,所以我不明白安装一个类和使用它的方法(我不需要框架)以及使用依赖注入和它的优点之间有什么区别。

编辑:这里有一个例子,我没有使用框架,并且没有工作的东西testng@factory annotation+没有足够的依赖注入知识


不,您不必使用框架:

依赖注入

当然,您也可以使用框架,就像有人说的那样,您可以使用Spring Framework并使用它们的注释。这里有一个教程:

使用Spring框架的依赖注入


您不必使用框架,但它将帮助您编写更清晰的代码。例如,如果您想在不使用框架的情况下将一个模拟注入到一个类中,您需要某种方法来实现这一点,方法是添加getter/setter,将其传递给构造函数或使用公共变量。

1
2
3
4
5
6
7
8
9
public class AClassToTest{
   private A aDependentClass;

   public void aMethodToTest(){
      int i = aDependentClass.someDependentMethod();
      ..
      ..
   }
}

在上面的代码中,aMethodToTest()依赖于aDependentClass.someDependentMethod()返回的内容。这意味着您应该创建一个类A的模拟,并模拟someDependentMethod返回的内容。这在不使用框架的情况下仍然是可能的,例如,通过添加getter和setter,以便可以在testclass中设置对象A:

1
2
3
4
5
6
@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,这将为您提供更干净的代码。


对于依赖注入来说,Guice是很好的(个人观点)。至少我发现它比弹簧更好。它也很轻。

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