【发布时间】:2012-03-18 05:46:06
【问题描述】:
依赖注入的一大优点是类的依赖在其接口(即构造函数)中显式定义。但是,如果使用依赖注入容器,则这些依赖中的许多会被合并为一个依赖(容器)。因此,一个类的许多真正的依赖关系都隐藏在容器后面。如何避免这种情况,以便在使用依赖注入容器时仍显式定义依赖关系?
【问题讨论】:
-
没有一致使用构造函数注入的类依赖于 DI 容器。您可以使用容器来连接此类类,但您也不必这样做。怎么还不够明确?
-
如果类 A 是使用 DI 容器构建的,并且 A 有一个 B,B 有一个 C,那么 C 如何访问其所需的依赖项?调用堆栈下几级的类如何访问依赖关系?
-
他们也使用构造函数注入。所以如果 C 依赖于 D,它会通过它的构造函数来获取它。
-
所以我所有的类都应该有如下构造函数:__construct(DatabaseAdapter $db, Cache $cache, Logger $logger, ...) ?
-
是与否:它们很可能不应该依赖于缓存、记录器和其他横切关注点:stackoverflow.com/questions/1708992/…stackoverflow.com/questions/8426132/…
标签: java php dependency-injection