Guice的scope

    Guice的scope默认的有一个singleton,

所以scope大致的作用就是对于这个需要让guice管理的类型,如何注入,注入的是哪个对象

比如@Singleton就是说在需要注入的地方注入此类型的唯一实例,此jvm里的任何用到的地方都是唯一的

 

    有人会说那Provider<T>不就可以实现这个需要吗?

没错,但是你不得不为每一个你需要的的对象都写一个singleton模式的Provider<T>,

 

 

    所以scope就产生了, 其实他就是如何去使用Provider的一个定义,我guice的源码没有看完,但是我猜想

guice会自己为用户做的绑定产生匿名的Provider<T>

 

    看下面这个需求:

    我们需要在所有的servlet请求里拿一个对象A,这个A的实例我希望按照我的绑定配置来注入,我可以:

 

    bind(...).to(A.class);或者

    bind().toProvider(providerA);

 

    但是我希望他自己每次保存到request里,不需要我再繁琐的写

    request.getAttribute("mya");和request.setAttribute("mya", mya);

 

    这样的话,你只需要在你的业务类里做一个@Inject private A mya;就可以了,guice就会自己给你从request里去取,如果没有

就会调用providerA,再保存到request里,你只需要做以下绑定就可以一劳永逸了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值