dependency-injection - 当有两个不同的构造函数时如何使用 Guice 进行注入(inject)?

标签 dependency-injection guice

这里完全是 Guice 菜鸟,已经阅读了几篇文章并观看了介绍视频,仅此而已。

这是我试图“guicifiy”的简化旧代码。不太清楚如何,因为(据我所知),我只能 @inject -注释两个构造函数之一?调用类如何创建一个或另一个实例?或者我必须以某种方式重构它?

public class MyDialog extends JDialog {
    public MyDialog( JFrame parent, <other parameters...> ) {
        super( parent );
    }

    public MyDialog( JDialog parent, <other parameters...>) {
        super( parent );
    }
 }

最佳答案

您只能注入(inject)一个 ctor。

根据此类的使用方式,您可以:

  • 使用两个"new"方法将工厂注入(inject)客户端代码。
  • 将所有参数滚动到一个构造函数中,并在不需要时传递 null。

How can a calling class create the one or the other instance?

这表明调用类将需要 MyDialog 的多个实例?然后你需要使用一个手工工厂(如果你只有一个ctor,辅助注入(inject)可以为你处理这个)。我不知道你在做什么的细节,我可能会重复你已经知道的内容,但作为空白声明,我建议还从 MyDialog 中提取一个接口(interface)并让工厂返回它们。这样你就可以在测试中伪造 MyDialog。

关于dependency-injection - 当有两个不同的构造函数时如何使用 Guice 进行注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840643/

相关文章:

dependency-injection - 是否存在初始化通过 DI 容器创建的对象的模式

导航到新页面时 WPF 依赖注入(inject)

c# - Ninject:单例绑定(bind)语法?

java - Google 云端点和依赖项注入(inject)

java - Guice 辅助注入(inject)已配置

android - 在 super.onCreate() 之前将 Hilt 注入(inject)到 Activity 中

java - spring mvc实现中的DI和IOC

java - Guice MethodInterceptor 应该返回什么

java - Guice 代理支持循环依赖

java - Guice 中一个类的多个提供者