译者:kefate

原文:https://github.com/google/guice/wiki/Overview

大家好,我是kefate。今天开始我将会把Google Guice的官方文档陆续翻译一遍,水平有限,若有翻译不妥之处,还望各位不吝指出。OK,话不多说,下面开始今天的正文~


Guice 是一个基于Java的轻量级的 依赖注入(dependency injection) 框架。

使用依赖注入有很多好处,但手动操作往往会导致编写大量的模板代码。为了解决这个问题,Guice 框架应运而生。它可以让你使用依赖注入的同时,避免编写大量的模板代码,这一点在下一节中有进一步的说明。

简单来说,Guice 减轻了对象工厂的需求,同时减少了代码中对 new 的使用。我们可以把 Guice 的 @Inject 想象成新的 new。在某些情况下,你仍然需要编写工厂模式的代码,但你的代码不会直接依赖于它们。代码将更容易修改、单元测试以及在其他情况下复用。

Guice 拥护Java的类型安全特性,尤其是在涉及到Java 5中引入的特性时,如泛型和注解。你可以把 Guice 看作是对核心Java缺失功能的填补。理想情况下,语言本身会提供大部分相同的功能特性,但在这种语言出现之前,我们可以用 Guice。

Guice 可以帮助你设计更好的 API,并且 Guice API 本身也树立了一个好的榜样。 Guice 的设计理念是是宁缺毋滥(Guice is not a kitchen sink),我们用至少三个用例来证明每个功能的合理性。如果对于一个一功能没有把握,我们就不去管它。我们也提供了通用的能力让你能够扩展 Guice,而不是在 Guice 的核心框架中添加功能。

Guice 的目标是使开发和调试更容易、更快速,而不是更难、更慢。本着这一宗旨,Guice 避免使用一些难以理解的“黑科技”(Guice steers clear of surprises and magic)。不管有没有工具,你都应该能够理解代码,尽管工具可以使事情变得更加简单。当错误发生的时候,Guice 会多做一些工作来生成有用的信息。

最新文章

  1. 文章转载利用border、transparent实现微风
  2. iOS开发之Runtime机制深入解析
  3. Bug跟踪方法
  4. vb小程序浅析
  5. Android优化
  6. [CareerCup] 17.10 Encode XML 编码XML
  7. eclipse下添加viplugin插件的方法
  8. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例
  9. 1.6.8 Content Streams
  10. 关于在js中使用csstext的问题
  11. [PHP] Eclipse开发PHP环境配置
  12. JavaScript高级程序设计54.pdf
  13. U盘安装CentOS7
  14. centos6 qt ENV
  15. KVM虚拟化使用详解--技术流ken
  16. [leetcode-117]填充每个节点的下一个右侧节点指针 II
  17. nodejs在spawn中执行npm报错 [Error: spawn ENOENT]” errors
  18. android--------Socket的简单了解
  19. Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录
  20. 课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 3、Python Basics with numpy (optional)

热门文章

  1. MySQL数据库:6、约束的概述及语法
  2. MybatisPlus快速入手-----逆向工程
  3. Task02:艺术画笔见乾坤
  4. 【Spark】Day01-入门、模块组成、4种运行模式详解及配置、案例实操(spark分析过程)
  5. @Transactional注解事务失效的几种场景及原因
  6. 论文解读(CAN)《Contrastive Adaptation Network for Unsupervised Domain Adaptation》
  7. Spark详解(04) - Spark项目开发环境搭建
  8. python之路 57 linux 基础 命令与执行效果
  9. iOS如何实现自动化打包
  10. 手把手教你图文并茂windows10安装VMware创建CentOS-7-x86_64运行linux系统