Java:外部构造对象的依赖注入?
我是D.I.的超级粉丝。Java:外部构造对象的依赖注入?,java,design-patterns,dependency-injection,Java,Design Patterns,Dependency Injection,我是D.I.的超级粉丝。 我目前正在开发一个不太小的项目,它在任何地方都使用D.I. (手工制作的经典而美丽的D.I.) 在我看来,有以下优点: 当你习惯它时,它是直观的 不会以负面方式影响可读性 (事实上,它变得更好) 但最重要的是:如果我想测试部分或整个项目 对于某些接口的不同实现,我可以通过更改 少几个字符,而不是执行复杂的重构/重命名或其他解决方法 但是,遗憾的是,我不知道如何将D.I.与外国公司一起使用 以优雅的方式创建对象(记住,没有一些框架, 我用手做身份证) D.I.用手的意
我目前正在开发一个不太小的项目,它在任何地方都使用D.I.
(手工制作的经典而美丽的D.I.) 在我看来,有以下优点:
- 当你习惯它时,它是直观的
- 不会以负面方式影响可读性 (事实上,它变得更好)
- 但最重要的是:如果我想测试部分或整个项目 对于某些接口的不同实现,我可以通过更改 少几个字符,而不是执行复杂的重构/重命名或其他解决方法
有什么想法吗?大家都知道有人这样做。我不知道如何在luddite DI环境中做到这一点。JAXBContext是否使用了一个?您可以像传递构造函数一样将参数传递到该函数中。如果这不能满足您的需要,那么在创建对象后,传统的setter注入(即调用
context.setXyz(xyzInstance)
方法)将手动模拟spring等人自动执行的操作…为什么“手动D.i.必须意味着“将某些内容传递给c-tor”
你能这样做吗
ThingOne one = new ThingOne();
one.setInjectedItem( a );
one.setOtherInjectedItem( b );
在spring依赖项注入中,这将是通过一个属性进行的注入,我不明白为什么不能“手工”完成这项工作。+1我会选择建议的任何一种@ivan如果您仍然对调用它的代码行感到不舒服,请将它们打包并将代码移到其他地方。这是一个限制,你必须在某个时候处理它。我也不知道java是否允许,但在.net中,您可以通过反射调用已实例化对象的构造函数。