Google Guice 教程

2024-02-22 19:38
文章标签 教程 google guice

本文主要是介绍Google Guice 教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Google 近日宣布发布 Guice。Guice, 发音为'juice', 是Google内部使用的 Java依赖注入框架。Guice新版本宣布已经完全支持annotations 以及 generics.
Guice无配置文件,实用JDK5.0的annotation描述组件依赖,相比Spring更加简单。
Guice 能够注入 constructors, fields 以及 methods (任何方法, 任意参数, 而不仅仅是setter方法), 同时Guice还支持自定义scopes,循环依赖, 静态成员注入, 整合Spring, 以及AOP. 相比Spring拥有更加强大的功能.
xwork2.0已经集成了Google guice容器。同时Google guice的速度比Spring快了100倍.

Guice的工作流程是这样的:
  1.        首先将自己创建的Module传给Guice.createInjector(),Guice会为你的Module创建一个binder,你的Module利用这个binder来实现各种绑定,然后Guice再创建一个Injector出来,我们就可以利用这个Injector来Inject我们的服务了,就是将服务的类传入,则可以对这个类实现注入了

  2.        只是写了个简单的例子,了解了下Guice的流程,肤浅的来看Guice是脱离了配置文件来描述依赖和被依赖之间的关系,都是通过注释的方式(申明注入点)和Module(注入的配置)来达到注入的目的,当然不一定非要Module来申明注入的配置,也可以在被注入的接口中用注释的方法申明对应的哪个实现最为注入的CLASS

  3.        不过,用注释的方式与类的耦合太高老,也不太利于维护,想象一下,在稍大的应用中,在XML配置中能一目了然的理清除各个bean之间的关系始终比要在各个类里面去找注入点好的多吧.
那使用Guice和传统的实例化方式有什么区别呢?

下边对于不同社会形态下一个人(java对象,调用者)需要一把斧子(java对象,被调用者)的例子:
  • 1原始社会时,劳动社会基本没有分工,需要斧子的人(调用者)只好自己去磨一把斧子,每个人拥有自己的斧子,如果把大家的石斧改为铁斧,需要每个人都要学会磨铁斧的本领,工作效率极低。

  •    对应java里的情形就是:JAVA程序的调用者new一个被调用者的实例。类耦合度极高,修改维护烦琐,效率极低。

  • 2、工业社会时,工厂出现,斧子不再由普通人完成,而由工厂生产,当人们需要斧子的时候,可以到工厂购买斧子,无需关心斧子是怎么制造出来的,如果废弃铁斧为钢斧,只需改变工厂的制造工艺即可,制作工艺是工厂决定的,工厂生产什么斧子,工人们就得用什么斧子。

  • 对应java里的情形就是:JAVA程序的调用者可以以来简单工厂创建被调用者,变化点被隔离到了简单工厂里,虽然耦合度降低,但是调用者会和工厂耦合,而且需要定位自己的工厂。

  • 3、近代工业社会,工厂蓬勃发展,人们需要什么斧子,只需要提供一个斧子图形,商家会按照你提供的图形将你的斧子订做好,送上门。

  • 对应java里的情形就是:spring的依赖注入。

  • 4、进入按需要分配社会,信息进入现代化,人们不再去工厂购买斧子,不再拘泥于需要什么斧子事先画好什么样的图形,只需要打个电话,描述一下需要什么类型的斧子,或许想打造一个物美价廉的斧子,商家会根据市场零件的价格,计算出最优制作工艺,打造最适合的斧子送过来,更加信息化,更加人性化。

  • 对应java里的情形就是:基于描述的注入,动态的,灵活简单的注入,如:Guice。

一下给一个使用了Guice的实例代码: 
       Google Guice需要使用JDK1.5以上java环境

 使用com.google.inject.Module接口实现类

文件名
说明
           HelloGuice.java
               业务逻辑接口定义文件
           HelloGuiceImpl.java
                业务逻辑接口实现文件
           HelloGuiceModule.java
               该文件必须实现com.google.inject.Module接口
            TestGuice.java
                 测试文件









这篇关于Google Guice 教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736280

相关文章

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤