Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么依赖注入需要另一种语言?_Java_Spring_Dependency Injection_Inversion Of Control - Fatal编程技术网

Java 为什么依赖注入需要另一种语言?

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编程,但对Spring还是相当陌生的。我一直在阅读关于依赖注入/控制反转(在过去的几个月里,我一直在与Spring一起使用它),但我不知道是否需要一种单独的语言(xml/Spring)来实现它


在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实现依赖注入的方式。我在第二段中投了赞成票,因为这也是我的感受。