我想花一些时间来总结一些流行的Java依赖注入(DI)框架。 这是可用功能的高级概述。
首先,什么是依赖注入?
“依赖注入是一种软件设计模式,可以删除硬编码的依赖,并可以在运行时或编译时更改它们。” – 维基百科
如果您曾经有一个带有12个参数的构造函数,那么您就已经遇到了使用依赖注入的令人信服的理由。
大多数对象都需要引用其他对象才有用。 依赖注入使系统可以提供那些引用,而您不必在应用程序级别上管理所有这些依赖。
这听起来很复杂,但实际上并非如此。 由于这不是对依赖项注入的深入讨论, 请查看Wikipedia页面 ,以各种语言查看几个示例。
方匕首
从最简单,最轻便的框架之一开始, Square Dagger是一个很小的库(<100KB),对于必须最小化其占用空间的程序(如移动应用程序)很有用。 它缺少较大框架的许多功能,但是它提高了速度,并提供了一种简洁的编译时验证工具。
- 方匕首
- 在Android上使用Dagger进行依赖注入
- Dagger –一个新的Java依赖注入框架
Google Guice
Guice是Google尝试创建功能丰富的独立DI工具的尝试。 它在大多数应用程序(尤其是Web开发)中很有用。 它提供了比Dagger更多的功能,但速度较慢并且可能很复杂。
- Guice –入门
- 创建一个简单的谷歌guice应用程序
- 使用Guice进行高级依赖注入
春天很大。 它会为您做所有事情,甚至编写perl,以便该perl可以洗衣服。 当然,它具有依赖注入。
好处是,如果您已经在使用Spring,则启用和使用DI非常容易,并且可以实现很好的集成方法。
不利的一面是,如果Spring不是您的本事,或者您试图将DI添加到现有的企业应用程序中,则可能很难隔离想要使用的一小部分功能。
可以通过XML或注释来配置Spring DI。 我强烈建议使用带注释的方法。 遍历代码要容易得多,并且可以为需要了解正在发生的事情的开发人员提供重要的见解。
- Spring框架的依赖注入
- Spring IoC容器
- Spring IoC教程
Java EE6 CDI
CDI是Java Enterprise Edition中包含的上下文和依赖注入框架。 从表面上看,它看起来与Spring的基于注释的DI机制非常相似,实际上是这样。 它的幕后工作有些不同,但是在大多数情况下,它试图解决Java EE人群完全相同的问题。
- CDI依赖注入入门教程 。 注意:这是一个非常详细的教程。
- CDI概述
Pico容器
我最后提到这一点是因为我只是在互联网上闲逛时碰到的。 像Dagger一样, PicoContainer是一个非常小的框架,旨在很好地完成一些工作。 它不具有Spring或CDI的功能或复杂性,而作为交换,您将获得简化。
我对此并不了解很多,但是现在我知道它的存在。 每天都有新的冒险!
- PicoContainer简介
- 两分钟教程
重复数据删除
这篇文章是在我们的软件顾问之一Shannon Griswold( www.thegrisexplores.com )的允许下发布的。 原始文本可以在这里找到。
翻译自: https://www.javacodegeeks.com/2014/02/dependency-injection-options-for-java.html