实现依赖注入的最小方法是什么?

Chu*_*uck 9 java spring dependency-injection guice

我一直在阅读关于Spring的内容,虽然它声称是一种不那么复杂的EJB替代品,但我很难绕过它.实现依赖注入比使用Spring方法有更简单的方法吗?

Bri*_*new 9

为什么不在没有框架的情况下这样做呢?

询问你的类依赖什么,然后通过(比如说)构造函数注入这些对象.

一些提示:

  1. 你的班级是否依赖单身人士?改为注入该对象(可能作为工厂)
  2. 你的对象是否依赖于其他具体类?如果是这样,请注入,但通过接口引用它们,这样您就可以替换不同的实现

例如,只需使用构造函数创建一个类:

public TradeSaver(final ITradeValidator validator, final ITradeDatabase db);
Run Code Online (Sandbox Code Playgroud)

(其中两个参数都是接口)然后您可以注入您所TradeSaver依赖的核心组件(验证和数据库保存),并可选择为测试提供不同的实现,不同的部署等.

  • 为学习目的而做的仍然很有趣.例如,我很惭愧地承认,当多年前DI热潮开始袭击Java世界时,我无法理解为什么它有用(它的信息比今天少)...所以我写了我的拥有自己的DI框架,一旦我拿到它,我扔掉了我的(设计糟糕的)轮子. (5认同)
  • 问题是这种事情很快变得非常讨厌,因为你像疯了一样把事情传递给调用堆栈,而更高层次的方法需要这样或那样的几十个参数.当你将所有内容封装起来时,你已经编写了自己的(可能是低效的,可能是设计糟糕的)DI框架. (3认同)

Mic*_*rdt 3

Google Guice是一个非常简约的 DI 框架。