Java 为什么依赖注入需要另一种语言?
我很习惯用Java编程,但对Spring还是相当陌生的。我一直在阅读关于依赖注入/控制反转(在过去的几个月里,我一直在与Spring一起使用它),但我不知道是否需要一种单独的语言(xml/Spring)来实现它Java 为什么依赖注入需要另一种语言?,java,spring,dependency-injection,inversion-of-control,Java,Spring,Dependency Injection,Inversion Of Control,我很习惯用Java编程,但对Spring还是相当陌生的。我一直在阅读关于依赖注入/控制反转(在过去的几个月里,我一直在与Spring一起使用它),但我不知道是否需要一种单独的语言(xml/Spring)来实现它 在Java中创建一个名为DependencyHandler的单例,并将所有内容保持在同一种语言中,有什么不对?使用xml/Spring有什么好处?您也可以创建使用Java语法的依赖项注入框架。例如,请看一下。依赖项注入不需要单独的语言 Spring是一个Java框架,历史上需要用xml进
在Java中创建一个名为DependencyHandler的单例,并将所有内容保持在同一种语言中,有什么不对?使用xml/Spring有什么好处?您也可以创建使用Java语法的依赖项注入框架。例如,请看一下。依赖项注入不需要单独的语言 Spring是一个Java框架,历史上需要用xml进行配置。现在,您可以使用xml或java注释对其进行配置
Google的Guice是一个简单的依赖注入框架,所有配置都使用Java。Spring只是在大型项目中管理依赖注入的一种简单方法 但您可以在类上使用静态工厂方法注入依赖项:
public class Foo
{
public Foo static mkFoo(/* dependencies */)
{
// assign dependencies to members
}
// ordinary class stuff
}
然后,只要想使用Foo
,就可以执行Foo.mkFoo(/*dependencies*/)
。不需要弹簧
在Java中创建一个名为DependencyHandler的单例,并将所有内容保持在同一种语言中,有什么不对
在一个类中处理所有依赖项很快就会变得混乱,并且会导致与所有其他类的耦合。但这并不是不在纯java中处理DI的理由。我将专门回答XML的“好处”部分,尽管没有太多
将配置与代码完全分离会从源代码中删除所有框架构件,这是有益的
创建影响配置文件的工具链(属性加载/替换、配置感知GUI配置编辑器、文档生成等)更容易(不是荒谬的,但足够值得注意)
集中配置;配置不是散落在代码库中,而是在一组文件(或单个文件)中。这不仅仅是一个XML版本,它取决于如何配置
我认为某些类型的配置比其他类型更适合外部配置。我根据需求、框架允许的内容以及框架如何处理配置方面进行选择。出于特定目的,自定义语言(xml)可能优于Java,这是有正当理由的。然而,对于DI来说,原因是有弹性的,事实上,不是真正的原因 从happy Spring用户的无数证词来看,压倒性的原因是他们不知何故认为xml不是代码。他们已经厌倦了编写样板Java代码,他们很乐意切换到样板xml。这让他们很开心 人类在经济问题上是不理性的。我们拥有周密的系统,可以循环地转移资源,在这种毫无意义的浪费努力中找到舒适和安全感
但我想幸福是最重要的,不管它有多迟钝 依赖注入与应用程序的设计方式有关。它可以以多种方式实现,我对spring不太了解,但我认为使用XML是spring实现依赖注入的方式。我在第二段中投了赞成票,因为这也是我的感受。