Guice学习 ------- 快速入门

Posted 儒雅随和狗粉丝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guice学习 ------- 快速入门相关的知识,希望对你有一定的参考价值。

这两篇博客基本囊括了Guice所有基本操作:

https://www.cnblogs.com/winton-nfs/p/13958362.html

https://blog.csdn.net/xxxlxy2008/article/details/89736544

对基本操作的补充:

1.被注入的变量不能为static,因为若设置为static,因为Guice是用到某个类时才去创建对象,这时IOC容器还没该对象,则初始化时会报空指针异常,所以测试时也就不能放到main方法中,需要单独弄个类/方法去测试.

但是@Provides 注解的方法可以是静态方法或普通方法

2. 注意Named别导错包

3.Linked Bindings

直接在方法里加参数或者直接new 效果一样

1.
​​​​​​​@Provides
CreditCardProcessor provideCreditProcessor()
{

    return new CheckoutCreditCardProcessor();
}

这两个效果一样
@Provides
CreditCardProcessor provideCreditProcessor(CheckoutCreditCardProcessor checkoutCreditCardProcessor)
{
    return checkoutCreditCardProcessor;
}


2. 链式 Linked bindings can also be chained:

@Provides
    CheckoutCreditCardProcessor provideCreditProcessor(CreditProcessor creditProcessor)
    {
        System.out.println("调用: creditProcessor");
        return creditProcessor;
    }


    @Provides
    CreditCardProcessor provideCreditProcessor1(CheckoutCreditCardProcessor checkoutCreditCardProcessor)
    {
        System.out.println("调用: checkoutCreditCardProcessor");
        return checkoutCreditCardProcessor;
    }

result:
调用: creditProcessor
调用: checkoutCreditCardProcessor

3.IOC里没有对该类进行声明,这样自动创建自己的类
 GuiceDemo guiceDemo=injector.getInstance(GuiceDemo.class);
  guiceDemo.send();

// 声明不声明都行,不声明会自动创建
  @Provides
    GuiceDemo getGuiceDemo()
    {
        return new GuiceDemo();
    }

以上是关于Guice学习 ------- 快速入门的主要内容,如果未能解决你的问题,请参考以下文章

java轻量级IOC框架Guice

Guice入门

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

Guice源码学习基本原理

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

Google 开源的这个库,性能快到让程序员飞起来!