Java:对外部构造对象的依赖注入(inject)?

标签 java design-patterns dependency-injection

我是 D.I. 的 super 粉丝
我目前正在开发一个不那么小的项目,它使用 D.I.无处不在
(经典而美丽的 D.I.手工制作)。

从我的角度来看,有以下优点:

  • 当您习惯后,它会直观
  • 不会对可读性产生负面影响 (事实上,它变得更好)
  • 但最重要的是:如果我想测试部分或整个项目 对于某些接口(interface)的不同实现,我可以通过更改来做到这一点 几个字符,而不是进行复杂的重构/重命名或其他解决方法。

但是,遗憾的是,我无法弄清楚,D.I.可以与国外创建的一起使用 以优雅的方式对象(没有一些框架,记住, 我做 D.I.手工)。

D.I.用手意味着:你将东西传递给c-tor。 没有全局工厂或类似工厂,上帝禁止!

例如,JAXB 自行创建对象。不可能 告诉 JAXBContext:“请使用以下参数来创建我的 对象”。JAXB 只接受无参数 c-tor。

有什么想法吗?

最佳答案

为什么“D.I. by hand”必须意味着“将东西传递给 c-tor”?

你能做到吗?

ThingOne one = new ThingOne();
one.setInjectedItem( a );
one.setOtherInjectedItem( b );

在 spring 依赖注入(inject)中,这将通过属性进行注入(inject),我不明白为什么这不能“手动”完成。

关于Java:对外部构造对象的依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/763089/

相关文章:

java - 如何使用 Selenium 选择不同的元素?

c# - Autofac - InstancePerHttpRequest 与 InstancePerLifetimeScope

spring - 如何在@InjectMockKs 测试实例中注入(inject)实现列表?

java - Guice @Provides 方法不起作用

java - 我需要扩展到fragment 还需要listactivity

java - EJB 身份验证和授权

java - 错误的参数传递给 .ksh

design-patterns - 模型、工厂和存储库

java - 责任链模式是否可以很好地替代一系列条件?

c# - 如何解决这个通用的存储库模式问题?