总的来说,我是Spring和DI的新手。但据我所读,DI使您能够很容易地使用像Spring这样的框架来交换实现。当涉及到XML配置时,我可以理解值,因为为了实现可切换的实现,根本不需要修改代码。但是,如果我们使用的是像@Autowired或@Qualifier这样的注释,那么...we将需要修改代码。那么,为什么我们要在基于XML的配置上使用注释呢?
发布于 2018-04-02 19:56:48
这实际上是一个活跃的话题,大约在2009年Spring3.0发布的时候,JavaConfig被添加到核心系统基础中。
从理论上讲,能够将应用程序设置具体化是一件很棒的事情。但是,实际上有两组不同的设置选择:应用程序形状或依赖关系图,以及特定的值,如API键、数据库连接字符串等,这些值因环境而异,但通常不会改变连接bean的方式。
经验表明,依赖关系图(本质上是用XML表示的)几乎从未更改过而不对附带的实现代码进行更改,所以用XML定义该图几乎没有什么实际好处。另一方面,用Java编写@Bean方法意味着在需要时测试配置要容易得多,编译器可以确保类型安全,决策逻辑(例如条件)更易于实现。
此外,注释的可用性意味着可以很容易地扩展域特定的语言,以便在Java中进行配置--只需创建一个新的注释及其附带的处理器(如@ConditionalOnProperty);Spring本身就是该模型灵活性的一个极端例子。另一方面,在XML中,向模式中注入新的标记或属性要麻烦得多。
有时,XML可能仍然是更好的选择(我特别支持它来编写Spring Integration管道,这可以比在Java DSL中更容易阅读),但是在大多数情况下,现实世界的好处并不是那么有价值,而且代码的配置的安全性和灵活性已经赢了。
发布于 2018-04-02 20:03:53
这不是必须的,您必须选择使用注释或XML,但注释比配置更容易使用,速度更快,可读性更强,当您使用它时,您将在单个文件中找到所有信息,但它也有缺点。
注释更佳
在任何稳定的并且定义应用程序核心结构的东西中使用注释。任何需要更改代码的内容都可以作为注释使用。
我建议您阅读以下链接以获得更多信息:
https://stackoverflow.com/questions/49617726
复制相似问题