我想花一些时间来总结一些流行的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 )的允许下发布的。 原始文本可以在这里找到。

参考: Keyhole Software博客上的JCG合作伙伴 Shannon Griswold 提供的Java依赖注入选项 。

翻译自: https://www.javacodegeeks.com/2014/02/dependency-injection-options-for-java.html

Java依赖注入选项相关推荐

  1. java依赖注入_Java依赖注入选项

    java依赖注入 我想花一些时间来总结一些流行的Java依赖注入(DI)框架. 这是可用功能的高级概述. 首先,什么是依赖注入? "依赖注入是一种软件设计模式,可以删除硬编码的依赖,并可以在 ...

  2. Java 依赖注入标准(JSR-330)简介

    Java 依赖注入标准(JSR-330)简介 转载请保留作者信息: 作者:88250 ,Vanessa 时间:2009 年 11 月 19 日 Java 依赖注入标准(JSR-330,Dependen ...

  3. Java依赖注入 - DI设计模式示例教程

    Java依赖注入 - DI设计模式示例教程 Java依赖注入 设计模式允许我们删除硬编码的依赖项,并使我们的应用程序松散耦合,可扩展和可维护.我们可以在java中实现依赖注入,以将依赖项解析从编译时移 ...

  4. JSR-330 JAVA 依赖注入标准API说明

    JSR-330 JAVA 依赖注入标准 文章目录 JSR-330 JAVA 依赖注入标准 Package javax.inject @Inject注解 @Qualifier注解 `Interface ...

  5. Java依赖注入(DI)实例详解

    Java依赖注入模式允许我们摆脱硬编码,使我们的应用更加松耦合.增强扩展性以及可维护性.通过依赖注入我们可以降低从编译到运行时的依赖性. Java依赖注入 Java的依赖注入仅仅通过理论是很难解明白的 ...

  6. 【概念题】java依赖注入,android开发实战-记账本清风紫雪

    这是使用构造器注入来装配bean 2.setter注入 这是使用setter注入,p是spring的名称空间,可以用来代替标签. 四.装配的概念 创建应用对象之间协作关系的行为称为装配.也就是说当一个 ...

  7. java 什么时候依赖注入_玩框架java依赖注入 – 何时使用单例

    So I am wondering, should I be using singleton objects as the examples seem to imply? If this is the ...

  8. java依赖注入inject_@inject依赖注入的过程

    首先需要知道实例是如何创建以及如何被注入的,而这一切都由container这个容器进行管理. @H_403_6@1.实例构建 class ContainerImpl implements Contai ...

  9. java依赖注入上下文_【Java EE】--Contexts and Dependency Injection (上下文與依賴注入)04...

    使用范圍 對於Web應用程序來使用注入另一個bean類的bean,bean需要能夠在用戶與應用程序交互的持續時間內保持狀態. 定義這個狀態的方法是給bean一個范圍. 您可以給對象表23-1中描述的任 ...

最新文章

  1. 异步发送邮件、短信、微信
  2. cortex m3 gcc项目_广东省住建厅党组书记赵坤到公司陆丰市污水PPP项目实地调研...
  3. 2018-1-8 Linux学习笔记
  4. Python学习之score
  5. 架构师之道:面向组件的Web架构设计
  6. while(getchar()=='\n')continue;为什么作用是清空行
  7. winform datagridview 设置标题
  8. Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
  9. mysql case when then 函数_MySQL case when then 语句使用和时间函数使用
  10. python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)
  11. 每日一则----算法----二分查找法
  12. THREEJS - 点击/拾取
  13. 23. stdin, stdout, stderr
  14. 程序员如何写项目经历
  15. java中Excel导出echart图片
  16. 惠普暗影精灵键盘灯怎么开
  17. C语言用不同字体标识,c语言中标识符命名规则是怎样的
  18. cad计算机绘注意事项,CAD打印的基本操作和重要的注意事项
  19. 基于Android系统的人脸识别签到软件
  20. vue 生命周期-activated

热门文章

  1. Navicat Premium 11 12 闪退
  2. java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)
  3. python开发工具下所有软件都打不开_Python 开发工具链全解
  4. java集合——映射表+专用集合映射表类
  5. java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类
  6. Spring_02_AOP初级总结
  7. 使用阿里巴巴json映射_使用JSON模式验证来映射稀疏JSON
  8. fluent瞬态_Java中的瞬态关键字及其使用
  9. java streams_使用JShell的Java 9 Streams API
  10. 如何在CircleCI上构建支持Graal的JDK8?