java依赖注入

我想花一些时间来总结一些流行的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依赖注入

java依赖注入_Java依赖注入选项相关推荐

  1. java的依赖注入_Java依赖注入的三种方式

    Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:组织方式注入,setter注入,基于注解的注入. 组织方式注入 组织器注入:保证了一些需要的属性在Bean实例化时就设 ...

  2. java动态代理_Java 动态代理和依赖注入

    [注]本文译自:https://psamsotha.github.io/jersey/2015/12/16/dynamic-proxies-dependency-injection.html 本文将讨 ...

  3. Java EE CDI程序化依赖关系消歧示例–注入点检查

    在本教程中,我们将看到在注入Java EE CDI bean时如何避免程序依赖消除歧义. 我们已经在Jave EE依赖关系消除歧义示例中展示了如何避免CDI Bean中的依赖关系歧义消除. 在这里,我 ...

  4. 依赖注入(di)模式_Java依赖注入– DI设计模式示例教程

    依赖注入(di)模式 Java Dependency Injection design pattern allows us to remove the hard-coded dependencies ...

  5. JAVA(一)依赖注入的简单理解

    所谓依赖,举个例子说明,一个类Person,另一个类Car,如果Person的某个方法比如说drive,需要引用Car,则称Person类依赖于 Car类,延伸到对象,这种依赖关系依然成立,比如说Pe ...

  6. java 构造器注入_Spring学习笔记1—依赖注入(构造器注入、set注入和注解注入)...

    什么是依赖注入 在以前的java开发中,某个类中需要依赖其它类的方法时,通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,spring提出了依赖注入的思想,即依赖类不由程序员 ...

  7. java 注入 循环_spring依赖注入——循环依赖

    上一篇博客简单地分析了下依赖注入.但是对于依赖注入的很多细节,都没有深入的分析.这一篇博客会继续分析spring的依赖注入.这篇博客会解决分析getBean缓存时候遗留下来的循环依赖问题. 循环依赖分 ...

  8. 框架依赖注入和普通依赖注入_依赖注入快速入门:它是什么,以及何时使用它...

    框架依赖注入和普通依赖注入 by Bhavya Karia 通过Bhavya Karia 介绍 (Introduction) In software engineering, dependency i ...

  9. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )

    文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

最新文章

  1. 关于微信 setData 回调函数中的坑
  2. 图像梯度增强_使用梯度增强机在R中进行分类
  3. 关于gitgithub的操作
  4. [react] react组件间的通信有哪些?
  5. OpenCV Mat主要用法(1)
  6. js怎么获取ueditor值_UEditor获取内容
  7. 桌面虚拟化之PCoIP访问协议硬卡介绍
  8. 实用的 Python —— 使用虚拟环境 virtualenv(Linux)
  9. 2018上半年掘金微信群日报优质文章合集:前端篇
  10. hp linux 禁用u盘启动不了,笔记本被禁用U盘启动功能的bios设置解除方法
  11. 几种颜色空间(RGB,YUV,YIQ,HSI)的基本概念及转换
  12. JarvisOJ Basic 握手包
  13. cisco 防火墙模拟器_37、如果手头有华为AP,怎们配合模拟器做部分实验呢?(完结篇)...
  14. 文件里的三个重要时间:access time(访问时间), modify time(修改时间), change time(状态改动时间)
  15. 【Proteus仿真】AT24C02数据读写+LCD1602显示
  16. 中国成全球最大工业机器人市场 年增长速度25%
  17. JS中onchange事件:域内容被改变的事件
  18. Abp 项目生成数据到数据库
  19. Qt内存泄露工具Heob安装使用
  20. 法大大首批通过ISO 22301:2019认证

热门文章

  1. 【并查集】黑魔法师之门(codevs 1995/joyoi-codevs 1995)
  2. 是男人就过 8 题--Pony.AI 题 - A String Game
  3. 面试必问的 CAS ,要多了解
  4. 数据结构(三)之单链表反向查找
  5. javaSE基础代码案例
  6. Ajax传递json数据
  7. 拦截器---SpringMVC(权限拦截)
  8. JavaWeb前端之AJAX的初步学习
  9. 权限管理系统2_权限表,权限模块表
  10. mysql外键引用语法_mysql – 外键语法