首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Google 开源的依赖注入库,比 Spring 更小更快!

GuiceGoogle开源的一个依赖注入类库,相比于Spring IoC来说更小更快。Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念使用方式。...学习目标 概述:了解Guice是什么,有什么特点; 快速开始:通过实例了解Guice; 核心概念:了解Guice涉及的核心概念,如绑定(Binding)、范围(Scope)注入(Injection);...最佳实践:官方推荐的最佳实践; Guice概述 GuiceGoogle开源的依赖注入类库,通过Guice减少了对工厂方法new的使用,使得代码更易交付、测试重用; Guice可以帮助我们更好地设计...通过一个类型可能存在多个实现,比如在信用卡支付处理器中存在PayPal的支付Google支付,这样通过连接绑定就搞不定。...; 采用@Nullable:Guice默认情况下禁止注入null对象; 模块的处理必须要快并且无副作用 在Providers绑定中当心IO问题:因为Provider不检查异常、不支持超时、不支持重试;

92220

Google 开源的依赖注入库,比 Spring 更小更快!

Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念使用方式。...学习目标 概述:了解Guice是什么,有什么特点; 快速开始:通过实例了解Guice; 核心概念:了解Guice涉及的核心概念,如绑定(Binding)、范围(Scope)注入(Injection);...最佳实践:官方推荐的最佳实践; Guice概述 GuiceGoogle开源的依赖注入类库,通过Guice减少了对工厂方法new的使用,使得代码更易交付、测试重用; Guice可以帮助我们更好地设计...通过一个类型可能存在多个实现,比如在信用卡支付处理器中存在PayPal的支付Google支付,这样通过连接绑定就搞不定。...; 采用@Nullable:Guice默认情况下禁止注入null对象; 模块的处理必须要快并且无副作用 在Providers绑定中当心IO问题:因为Provider不检查异常、不支持超时、不支持重试;

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Maven容器的下半场:Guice,听说仅次于Spring

Guice是什么 根据wiki的描述,Guice就是依赖注入框架,由google开源。主要特点就是:支持以java注解的方式配置组件及依赖。...而Guice呢,我这边会重点讲解:怎么存。至于取,可能还分成两种,依赖注入直接从容器中取。但是依赖注入的底层实现,也是:发现我依赖的某个东西没有,就去容器里取。...https://github.com/google/guice/wiki/Bindings 绑定是什么意思,就是我最终可能需要从容器中获取ClassA类型的对象。...但是,它也不支持类路径扫描啊,比如给个包名,自动去扫描这个包下面的组件,反正官方不支持,说是有第三方插件,还没试过。...另外的问题就是,不支持spring的那种component-scan。

90940

Google Guice 快速入门

GuiceGoogle开源的一个依赖注入类库,相比于Spring IoC来说更小更快。Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念使用方式 基本使用 1....引入依赖 如果使用gradle的话,添加下列依赖 compile group: 'com.google.inject.extensions', name: 'guice-multibindings',...version: '4.2.0' compile group: 'com.google.inject', name: 'guice', version: '4.2.0' 当构建工具解决完项目的依赖之后,...下面这些例子都是Guice文档上的例子 链式绑定 我们在绑定依赖的时候不仅可以将父类子类绑定,还可以将子类更具体的子类绑定。...我们可以根据需要选择合适的作用域 Servlet集成 Guice也可以Servlet项目集成,这样我们就可以不用编写冗长的 web.xml,以依赖注入的方式使用Servlet相关组件 安装Guice

1.8K40

3分钟带你了解轻量级依赖注入框架Google Guice【享学Java】

Guice在Java领域并不流行(相较于Spring),但因为它轻量级,所以可以作为你去学习理解DI的一个抓手,适合你去进行独立的分析理解依赖注入的思想,毕竟程序员经常说的:思想都是相通的。...---- 正文 正所谓谷歌出品,必属精品,况且Guice还出自于它的广告这种多金部门,自然也不例外。Google Guice被大量应用于谷歌内部,然后2010年开源出来。...轻量级是一个相对概念,它至少应该有如下特征: 代码少 易维护 性能优异 Google Guice就是这么一个框架,它特别强调它的Lightweight特性。...---- Google Guice Google Guice作为一个纯粹的DI框架,主要用于减轻你对工厂的需求以及Java代码中对new的使用。...这便是一个最简单的使用Guice来实现依赖注入的示例,Spring的ApplicationContext还蛮像的有木有。

4.7K21

Guice依赖注入(接口多实现)

: guice就是我们核心要使用的依赖 接口多实现注入 --- 如果一个接口有多个实现,如果单单通过@InjectModule都难以直接实现,但多实现是经常会出现的,Guice提供了其它注入方式来解决此问题...io.edurt.lc.guice.annotation.Python注解类,用于提供guice框架标识 io.edurt.lc.guice.annotation.Java文件内容 package io.edurt.lc.guice.annotation...,这样就实现了绑定多接口实现的功能。...:108) at com.google.inject.Guice.createInjector(Guice.java:87) at com.google.inject.Guice.createInjector...(TestGuiceMultipleNamed.java:16) 这是因为我们使用了属性绑定了多接口实现,导致guice无法识别具体是哪个实现类,不过guice是强大的这种问题也被考虑到了,只需要使用@

83630

Guice依赖注入(Provider)

类文件进行定义的服务进行测试,添加以下代码 package io.edurt.lc.guice; import com.google.inject.Guice; import com.google.inject.Inject...Provider"); } } 我们运行程序输出 Hello Guice Provider 我们注意看binder的配置中,我们使用的是toProvider将实现类绑定到了Service接口中...使用@ProvidedBy注解绑定 --- 在src/main/java目录下新建io.edurt.lc.guice.GuiceAutoProviderService类文件,在文件输入以下内容 package...类文件进行定义的服务进行测试,添加以下代码 package io.edurt.lc.guice; import com.google.inject.Guice; import com.google.inject.Inject...Provider"); } } 我们运行程序输出 Hello Auto Guice Provider 在代码中我们可以看到我们没有去绑定Module也可以实现注入。

1K70

Google开源依赖注入框架-Guice指南

文中提到高效实现依赖注入的工具Guice,本文就介绍一下这款Google开源的依赖注入框架Guice及其使用方法。 1....简介 Google Guice 是一个轻量级的依赖注入框架,它支持Java 5或者更高版本的JDK,得利于Java 5中提供的泛型 (Generics) 注解 (Annotations) ,它可以使得代码类型安全...("软件质量保障"); } Guice 对依赖注入管理采用代码优先的策略,因此我们可以不用处理很多令人抓狂的XML配置。...隐式注入 Guice 还提供隐式注入一些通用组件,例如Injectorjava.util.Logger的实例等。...大家是不是发现了,我们的所有示例都使用了Logger,但你是不是找不到它的实际绑定代码。 5. Guice Scope机制 Guice支持我们在其他DI框架中逐渐习惯的ScopeScope机制。

1.7K10

Maven IOC 容器-- Guice内部有什么

Google Guice容器内部有什么 前言 Maven系列,好几天没写了,主要是这几天被Google Guice卡住了,本来是可以随便带过Guice,讲讲guice的用法就够了(这个已经讲了,在前面的文章...),但是,想着guice作为maven的底层IOC容器,对guice的理解深入一些,对后续的Maven源码学习也会比较有帮助,因此,就在那开始分析guice的源码。...Default Injector implementation. final class InjectorImpl implements Injector, Lookups 从它实现的接口com.google.inject.Injector...根据key/class,直接获取对应的实例 T getInstance(Key key); T getInstance(Class type); 大家看到这里,是不是觉得Spring...这里,我们发现内部工厂internalFactory的类型,之前也不太一样了。同时,下图可以看见,工厂内部直接存了这个String实例的值。

65430

TestNG 中使用 Guice 来进行依赖注入

GuiceGoogle开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。...Guice采用Java加注解的方式进行托管对象的配置,充分利用IDE编译器的类型安全检查功能自动重构功能,使得配置的更改也是类型安全的。...Guice提供模块对应的抽象module,使得架构设计的模块概念产物与代码中的module类一一对应,更加便利的组织梳理模块依赖关系,利于整体应用内部的依赖关系维护,而其他IOC框架是没有对应物的。...定义一个 Guice Module这个 Guice Model 会实现 Module 接口。然后对需要注入的类进行绑定。...绑定的语句在这里: binder.bind(TestConfigStorage.class).toInstance(config); binder.bind(

51740

Presto查询执行过程索引条件下推分析

Guice Google Guice 是从Google 开源的一款轻量级的依赖注入(DI,Dependency Injection)框架。...Guice 的一些概念: Guice:整个框架的门面,通过 Guice 获得 Injector 实例; Injector:一个依赖的管理上下文 Binder:一个接口实现的绑定 Module:一组Binder...,绑定一组被依赖的中间服务; Provider:bean的提供者 Scope:Provider的作用域 @Inject:类似Spring Autowired; @Name: Inject 配合使用类似...Spring Resource; 在一般的服务,只需要在 构造器上 @Inject 注解,Guice 会自动注入需要的服务自动处理依赖问题。...但是,Presto 采用了 Jackon序列反序列化 Guice IOC 技术,可以在 ConnectorTableHandler 实例化时注入 TupleDomain 对象。

4.2K40

Guice依赖注入(Scope)

: guice就是我们核心要使用的依赖 Singleton --- Guice支持我们在其他DI框架中逐渐习惯的ScopeScope机制。...类文件进行定义的服务进行测试,添加以下代码 package io.edurt.lc.guice; import com.google.inject.Guice; import com.google.inject.Injector...类文件进行定义的服务进行测试,添加以下代码 package io.edurt.lc.guice; import com.google.inject.Guice; import com.google.inject.Injector...将使用它来注释guice构造的类型,@Provides方法bind语法中的in() package io.edurt.lc.guice.annotation; import com.google.inject.ScopeAnnotation...接下来在src/main/java目录创建io.edurt.lc.guice.GuiceCustomScopeModule类文件绑定自定义Scope注解,我们通过实现Module进行注入,添加以下代码

1K30

Maven底层容器Plexus Container的前世今生,一代芳华终落幕

,jar/war时,打包组件就不同); 顺序执行生命周期中的每个阶段的时候,去找到对应的绑定的插件,然后执行插件(执行插件又包括:根据插件坐标,去本地仓库/远程仓库找对应的artifact,以及解析artifact...因此,google 在2007年的时候,就推出了一个轻量级的依赖注入框架,叫google guice。...此时,经过多年的迭代,在2010年前后,guice已经比较成熟了,在google内部也而得到了广泛应用,且依赖注入这个领域,也在持续不断地发展中,比如java官方定义了相关的标准api。...IOC容器,而是使用Guice,以后就只管用了,而guice的维护升级,自然有Guice的开源团队去跟进。...Guice足够优秀,在此之前,我竟然几乎没什么了解,Guice在哪些地方有应用呢,简单列举几个: google内部 scalatest TestNG Caffeine Cache Spring Security

39010
领券