Java 我需要一个框架来使用依赖注入吗?

Java 我需要一个框架来使用依赖注入吗?,java,dependency-injection,Java,Dependency Injection,在过去的两天里,我一直在阅读和练习依赖注入,但是没有任何效果,突然我发现依赖注入需要一些框架才能工作。 这是真的吗? 让我的项目依赖于某种框架,这不是一种糟糕的做法吗? 如果不使用框架,它能做到吗 编辑:我是编程新手,所以我不明白建立一个类和使用它的方法(我不需要一个框架)和使用依赖注入之间有什么区别,还有什么更好 编辑:这里有一个例子,我没有使用框架,依赖注入的东西也不起作用,Guice非常好(个人观点)。至少我觉得它比Spring提供的更好。它也很轻 不,您不必使用框架: 当然,您也可以使

在过去的两天里,我一直在阅读和练习依赖注入,但是没有任何效果,突然我发现依赖注入需要一些框架才能工作。 这是真的吗? 让我的项目依赖于某种框架,这不是一种糟糕的做法吗? 如果不使用框架,它能做到吗


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


编辑:这里有一个例子,我没有使用框架,依赖注入的东西也不起作用,Guice非常好(个人观点)。至少我觉得它比Spring提供的更好。它也很轻


不,您不必使用框架:

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


您不必使用框架,但它将帮助您编写更清晰的代码。例如,如果希望在不使用框架的情况下将mock注入类,则需要通过添加getter/setter、将其传递给构造函数或使用公共变量来实现

public class AClassToTest{
   private A aDependentClass; 

   public void aMethodToTest(){
      int i = aDependentClass.someDependentMethod();
      ..
      ..
   }
}
在上面的代码中,
amethodTest()
依赖于
aDependentClass.someDependentMethod()
返回的内容。这意味着您应该创建类
a
的模拟,并模拟
someDependentMethod
返回的内容。这在不使用框架的情况下仍然是可能的,例如,通过添加getter和setter,您可以在testclass中设置对象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,这将为你提供更清晰的代码

我认为你应该使用spring框架。但是我必须使用框架吗?Guice不完全是一个框架。。。但这比Spring依赖注入的功能要好得多。框架并不意味着“依赖”。通过使用框架,您的项目不依赖任何东西。框架是可重用性的例子。而且,您必须使用用于DI的框架。如果您不使用框架/库,您必须实现您自己的依赖注入系统,这可能会很无聊。。。我建议你也使用Guice,上面有2-3个人说我必须使用框架。我很困惑。@J.Kowalski框架是有人写的代码。如果你认为现有的库对你不好,你可以自己编写代码。我不明白建立一个类和使用它的方法(我不需要一个框架)与使用依赖注入有什么区别,还有什么更好。是的,你可以使用框架,但你不必这样做。它简化了一些事情。你可以阅读第一篇文章,它很好地解释了依赖注入的含义-