Guice学习(二) ------- 快速入门

本文详细介绍了Guice IoC容器的基本操作,包括@Provides注解的使用、静态方法与普通方法的区别、LinkedBindings的链式调用,以及自动实例化和命名规则。通过实例演示,帮助读者理解如何避免常见问题并高效利用Guice进行依赖注入。
摘要由CSDN通过智能技术生成

这两篇博客基本囊括了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();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值