我很喜欢用Java编程,但对Spring来说还是比较新的。我一直在阅读有关控制依赖注入/反转(并在过去的几个月里使用Spring),但我无法弄清楚是否需要一种单独的语言(xml / spring)来实现它。
在Java中创建名为DependencyHandler的单例并使用相同的语言保存所有内容有什么问题?使用xml / Spring有什么好处?
答案 0 :(得分:7)
依赖注入不需要单独的语言。
Spring是Java的框架,历史上需要在xml中进行配置。现在,您可以使用xml或java注释来配置它。
Google的Guice是一个简单的依赖注入框架,它具有Java中的所有配置。
答案 1 :(得分:3)
为了特定目的,自定义语言(在xml中)可能比Java更好,这可能是合理的原因。对于DI来说,原因很有弹性,事实上并非真正的原因。
来自快乐的Spring用户的无数证词,压倒性的原因是他们认为xml不是代码。他们厌倦了编写样板Java代码,他们很乐意切换到样板xml。这让他们感到高兴。
在经济问题上,人类是不理性的。我们拥有精心设计的系统,可以在圈子中转移资源,在无意义的浪费中找到舒适和安全。
但我认为快乐是最重要的事情,不过它可能是迟钝的。
答案 2 :(得分:2)
您也可以创建使用Java语法的依赖注入框架。例如,请查看Google Guice。
答案 3 :(得分:0)
Spring只是在大型项目中管理依赖注入的简单方法。
但您可以在类上使用静态工厂方法注入依赖项:
public class Foo
{
public Foo static mkFoo(/* dependencies */)
{
// assign dependencies to members
}
// ordinary class stuff
}
然后,只要您需要Foo.mkFoo(/*dependencies*/)
,就可以Foo
。没有春天需要。
在Java中创建一个名为DependencyHandler的单例并使用同一种语言保存所有内容有什么问题?
处理单个类中的所有依赖项将很快变得混乱,并将导致与所有其他类的耦合。但这不是在普通java中不处理DI的理由。
答案 4 :(得分:0)
我会特别回答XML的“好处”部分,尽管没有很多。
将配置与代码完全分开会从源中删除所有框架工件,这可能是有益的。
创建影响配置文件的工具链更容易(不可笑,但值得注意):属性加载/替换,配置感知GUI配置编辑器,文档生成等。
集中配置;而不是配置在代码库周围散布,它在一组文件(或单个文件)中。这不是一个只有XML的vitrue,它取决于事物的配置方式。
我认为某些类型的配置比其他配置更适合外部配置。我根据reqs,框架允许的内容以及框架如何处理配置方面来选择合适的内容。