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

Guice之IOC教程

Guice 在上一篇博客中, 我们讲解了Spring中的IOC示例与实现, 本文着重介绍Guice注入以及与Spring中的差异....Guice是Google开发的, 一个轻量级的依赖注入框架, 跟Spring最大的区别在于脱离xml配置,  大量使用Annotation来实现注入, 支持属性, 构造器, setter等多种方式注入对象...this.service1 = service1; 4 this.service2 = service2; 5 } 构造函数会自动注入多个参数, 因此只要写一个@Inject即可...动态参数注入 这个稍微麻烦一点, 需要引入guice-assistedinject, 利用FactoryModuleBuilder构造一个factory实行注入....实际业务场景中, 大部分构造函数的参数是动态从外部传递进来的, 并不是直接new出来的. 1 public class ServiceImpl implements TestService{ 2

2.1K90

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

不用接口了,直接绑定一个实现类 6. 接口绑定到一个构造函数:ToConstructorBindings 7. 内置的不用绑就能用的 8. 能不能不绑定直接用 9....search jenkins 这很多轮子,都是直接用的Guice,那是因为没什么历史包袱;但Maven不一样,maven之前用自己的IOC轮子,有自己独特的定义组件的方式(比如Spring通过@Component...这个场景我没写代码,大家自己看一下文档,也简单。 10. 注入的方式 前面说了很多怎么手动从容器里面取,当然了,要自动注入的话,也是支持:构造器注入、field注入等等方式。...如以下为构造器注入: 其他支持的特性 其他的,比如循环依赖、aop也是大体支持的,只是这个容器在安卓端用,会有问题,因为aop好像不太支持,所以给安卓端还专供了一个去掉aop的版本。...总结 在各种轮子里,用来管理自己的代码间的相互依赖,用Guice确实足够了,用在业务代码,就还是有点累。

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    来源:GinoBeFunny zhuanlan.zhihu.com/p/24924391 Guice是Google开源的一个依赖注入类库,相比于Spring IoC来说更小更快。...最佳实践:官方推荐的最佳实践; Guice概述 Guice是Google开源的依赖注入类库,通过Guice减少了对工厂方法和new的使用,使得代码更易交付、测试和重用; Guice可以帮助我们更好地设计...bind(MyConcreteClass.class); bind(AnotherConcreteClass.class).in(Singleton.class); 构造器绑定 3.0新增的绑定,适用于第三方提供的类或者是有多个构造器参与依赖注入...注入的方式通常有构造器注入、方法注入、属性注入等。...辅助注入(Assisted Inject)属于Guice扩展的一部分,它通过@Assisted注解自动生成工厂来加强非注入参数的使用。

    1.1K10

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

    Guice是Google开源的一个依赖注入类库,相比于Spring IoC来说更小更快。Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念和使用方式。...最佳实践:官方推荐的最佳实践; Guice概述 Guice是Google开源的依赖注入类库,通过Guice减少了对工厂方法和new的使用,使得代码更易交付、测试和重用; Guice可以帮助我们更好地设计...bind(MyConcreteClass.class); bind(AnotherConcreteClass.class).in(Singleton.class); 构造器绑定 3.0新增的绑定,适用于第三方提供的类或者是有多个构造器参与依赖注入...注入的方式通常有构造器注入、方法注入、属性注入等。...辅助注入(Assisted Inject)属于Guice扩展的一部分,它通过@Assisted注解自动生成工厂来加强非注入参数的使用。

    95320

    2018 年你可能已经错过的 Java 类库

    Awaitility Spock WireMock Guice Guice (发音同 ‘juice’) ,是一个 Google 开发的轻量级依赖性注入框架,适合 Java 6 以上的版本。...,允许最终用户在部署时能够接入自己想要使用的日志框架。...与标准的JUnit 参数化运行器的区别如下: 更明确 - 参数实在测试方法的参数中,而不是在类的字段中 更少的代码 - 你不需要用构造函数来设置参数 你可以在同一个类混合使用参数化和非参数化的方法。...参数可以通过一个CSV字符串或者一个参数提供类传入。 参数提供类可以拥有尽可能多的参数提供方法,这样你可以给不同的用例进行分类。...你可以拥有可以提供参数的测试方法 (再也不需要外部类或者静态类了) 你可以在你的集成开发工具中看到实际的参数值(而在JUnit的Parametrised里,只有连续数目的参数) 官方网站,GitHub,

    1.6K20

    Guice依赖注入(构造函数)

    本教程主要详细讲解Guice的构造函数注入. 我们将通过详细的代码以及步骤进行讲解....: guice就是我们核心要使用的依赖 构造函数注入 --- 在Guice中我们可以通过将需要的实体信息通过构造函数直接注入到我们需要的任意地方,我们通过列举一个例子来实际说明。...(TestGuiceConstructorNo.java:18) 这也就说明我们无法在非Guice容器中进行实例注入 多参数注入 --- 上述实例我们只是注入了一个参数,那我们尝试一下多参数注入。...static静态参数注入 --- 我们说过无法通过static属性直接进行注入使用,方法总是很多的,Guice提供了以下static注入方式....,这个是和static属性息息相关的,当我们注入static属性的时候要告知Guice我们具体使用static属性的父类,这样Guice才可以帮我们注入进来。

    76880

    2018年不能错过的 14 个 Java 库!

    下面是整理给你的 2018 年不应该错过的 14 个 Java 库包清单,多多少少大家应该都接触过一些,如果还没听过那就OUT了。 Guice Guice是一个Java 6以上支持依赖注入框架。...@NoArgsConstructor,@RequiredArgsConstructor和@AllArgsConstructor - 按顺序构造的构造函数:生成不带参数,每个final /非空字段有一个参数或每个字段有一个参数的构造函数...JUnitParams 与标准JUnit的主要区别: 更明确 - params是在测试方法参数中,而不是类字段 更少的代码 - 你不需要一个构造函数来设置参数 您可以在一个类中混合使用非参数方法的参数...参数可以作为CSV字符串或参数提供程序类传递 参数提供程序类可以具有任意多个提供所需方法的参数,以便可以对不同的案例进行分组 你可以有一个提供参数的测试方法(不再有外部类或静态) 您可以在IDE中查看实际的参数值...Jukito 集合 JUnit, Guice, 和 Mockito优点: 通过自动化,大大减少了样板,导致更容易阅读测试 引入对测试对象中的API更改更有弹性的测试 用@Inject注释的字段会自动注入

    1.6K10

    2017 年你不能错过的 Java 类库

    Guice Guice (发音同 ‘juice’) ,是一个 Google 开发的轻量级依赖性注入框架,适合 Java 6 以上的版本。 ?...,允许最终用户在部署时能够接入自己想要使用的日志框架。...与标准的JUnit 参数化运行器的区别如下: 更明确 – 参数实在测试方法的参数中,而不是在类的字段中 更少的代码 – 你不需要用构造函数来设置参数 你可以在同一个类混合使用参数化和非参数化的方法。...参数可以通过一个CSV字符串或者一个参数提供类传入。 参数提供类可以拥有尽可能多的参数提供方法,这样你可以给不同的用例进行分类。...你可以拥有可以提供参数的测试方法 (再也不需要外部类或者静态类了) 你可以在你的集成开发工具中看到实际的参数值(而在JUnit的Parametrised里,只有连续数目的参数) 官方网站,GitHub,

    1.5K10

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

    public class TestGuice { @Inject private Animal animal; //// 官方推荐使用构造器注入,但本类是测试类,为了方便就使用属性注入喽...(new Dog()); 以上三种方式处理后,使用依赖注入或者用API injector.getInstance()得到的均会是同一个实例对象,这就是单例了。...Guice不可能撼动Spring的江湖地位,其实它也无意去撼动它,乖乖的专心做自己的DI就好。...那么如果一个开源的库是用Guice构建的,而你想在Spring Boot环境下使用肿么办呢???那就是整合。...企业级应用当然还是推荐使用Spring,而如果你是自己写写组件,不妨用Guice去管理的依赖吧,它能让你的代码结构更加优美且显得不那么臃肿。

    5.7K21

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

    文中提到高效实现依赖注入的工具Guice,本文就介绍一下这款Google开源的依赖注入框架Guice及其使用方法。 1....本文会通过一些例子来初步的认识一下 Guice 框架。 当然,不了解依赖注入基础知识的同学建议先看下这篇科普贴 《浅谈依赖注入的实现》。 2....通过bind,我们可以实现Guice如何将依赖项注入到一个类中, 我们在com.google.inject.AbstractModule的实现中定义: public class BasicModule...构造函数绑定 我们还可以使用构造函数绑定注入一个没有默认无参数构造函数的依赖对象: ​ @Override protected void configure() { bind...但是在这种情况下,类的依赖关系树不会自动关联。 4. 依赖注入类型 Guice支持DI所推荐的标准注入类型。

    2.1K10

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

    中的插件元数据,元数据中会告诉你,支持传哪些参数,参数类型是啥) 执行完成后,返回结果。...既然外部不成熟,他们的重心也不在这些依赖注入框架上面,所以他们就基于自己的需求,自己搞了一个适合Maven的,它就叫:Plexus。...Plexus类似其他的IOC框架,如Spring,但它还额外提供了很多特性,如:组件生命周期管理、组件实例化策略、嵌套容器、组件配置、自动注入、组件依赖、各种依赖注入方式(如构造器注入、setter注入...maven安装目录的lib,发现plexus相关的,仅剩少数几个了,如,下图的几个工具: 还有下图的启动类: 当初说好的IOC容器,结果Maven怎么自己也不用了呢?...因此,google 在2007年的时候,就推出了一个轻量级的依赖注入框架,叫google guice。

    48110

    Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)

    -依赖注入 TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行)。 1.1-本机依赖项注入 TestNG允许您在方法中声明其他参数。...> testClass); } 您的工厂将被传递TestNG需要实例化的测试上下文和测试类的实例。您的createModule方法应返回一个Guice模块,它将知道如何实例化此测试类。...您可以使用测试上下文来查找有关您的环境的更多信息,例如在testng.xml中指定的参数等。通过父模块和guice-stage套件参数,您将获得更大的灵活性和Guice功能。...还将使用该模块获取特定于测试的Guice模块和模块工厂的实例,然后将为每个测试类创建子注入器。通过这种方法,您可以在父模块中声明所有公共绑定,也可以在模块和模块工厂中注入在父模块中声明的绑定。...然后使用构造函数注入将MyContext注入到TestModule类中,该类也声明对MySession的绑定。

    1.9K30

    依赖注入

    按运行时处理顺序: 构造器 方法 属性 构造器上使用@Inject 在构造器上使用@Inject时,其参数在运行时由配置好的IoC容器提供。...比如在下面的代码中,运行时调用AgentFinderService的构造器时,IoC容器会注入其参数AgentFinder。...,所以规范中规定类中只能有一个构造器带@Inject注解 方法上使用@Inject 运行时可注入的参数可以是多个也可以是0个,使用参数注入的方法不能声明为抽象方法,也不能声明其自身的类型参数。...,其所需的资源可以作为参数注入,比如向查询数据库的服务方法中注入数据访问对象(DAO)。...向构造器注入的通常是类中必需的依赖项,而对于非必需的依赖项,通常是在set方法上注入。比如已经给出了默认的属性就是非必需的依赖项。 属性上使用@Inject 简单直接,但最好不要用。

    1.7K20

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

    Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。...Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter方法)进行注入。...Guice提供模块对应的抽象module,使得架构和设计的模块概念产物与代码中的module类一一对应,更加便利的组织和梳理模块依赖关系,利于整体应用内部的依赖关系维护,而其他IOC框架是没有对应物的。...定义一个 Guice Module这个 Guice Model 会实现 Module 接口。然后对需要注入的类进行绑定。...使用下面的语句直接注入到模块中。然后把需要的服务,注入进来就可以了。

    56940

    java的ioc

    在传统的编程模式中,程序员需要自己管理对象的生命周期和依赖关系,这样会导致代码的耦合性高,难以维护。而使用IoC模式可以将这些问题解决掉,同时也可以提高代码的可测试性。...同时也可以提高代码的可测试性,因为可以通过注入不同的依赖对象来测试代码的不同行为。 在Java中,使用IoC模式的框架有很多,比较常见的有Spring和Google Guice。...,我们使用构造函数来注入HelloService对象。...除了使用构造函数来注入依赖对象之外,还可以使用注解来实现依赖注入。...; } } 在这个类中,我们使用了Spring的@Service注解来标记它是一个服务。这样,Spring就会自动管理它的依赖关系,并注入到其他需要它的类中。

    55630

    Elasticsearch 中的 Guice

    为了方便阅读源码, 此处我先通过模仿ES guice的使用方式简单写了一个基本Demo 方便理解, 之后再来理一下ES的Guice使用. 编写的测试类原理图如下: ?...其中Person的构造函数通过 @Inject 注解注入其他实例 gradle 需要引入的 Jar 包 compile group: 'com.google.inject.extensions', name...class ToolModule extends AbstractModule { @Override protected void configure() { //此处注入的实例可以注入到其他类的构造函数中...和 Map 这三个接口定义的变量,对象将通过 @Inject 从构造方法中注入进来 public class HumanModule extends AbstractModule...Override protected void configure() { bind(Person.class).asEagerSingleton(); } } Person类的构造函数是通过注入的方式

    1.3K10

    一个完整的TDD演练案例(完)

    知识:依赖注入 依赖注入模式体现了“面向接口设计”原则,即分离接口与实现,并通过构造函数注入、设值方法注入或接口注入等手法将外部依赖注入到一个类中,从而解除该类与它协作的外部类之间的依赖。...在我们的例子中,主要通过构造函数注入的方式实现依赖注入。我们当然可以自己来组合这些类,但也可以运用现有的框架,例如Java平台下的Spring以及更轻量级的Guice。...首先为那些运用了构造函数注入的类配置Guice提供的@Inject,如下所示: public class AnswerGenerator { private RandomIntGenerator...框架并不知道该注入它的哪个实现类(即使此时只有一个实现类),因此需要创建一个Module,它派生自Guice提供的AbstractModule,能够将接口与实现类进行绑定: public class GuessNumberModule...,Guice框架会帮我们完成依赖对象之间的注入。

    1.9K40
    领券