`

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里,你只需要做以下绑定就可以一劳永逸了.

分享到:
评论

相关推荐

    shiro和guice整合,使用权限注解

    拦截器需要使用 `@Singleton` 或 `@Scope("prototype")` 来定义其生命周期。 最后,将拦截器与 Shiro 的注解关联起来。这通常通过在 Guice 的模块中使用 `bindInterceptor()` 方法完成,指定哪些类或方法应该被拦截...

    JUnit4和Guice测试库Acai.zip

     &lt;scope&gt;test&lt;/scope&gt; 使用 Acai 进行测试注入@RunWith(JUnit4.class) public class SimpleTest {  @Rule public Acai acai = new Acai(MyTestModule.class);  @Inject private MyClass foo;  ...

    java guice dependency injection tutorial

    - **作用域**:Guice 允许指定对象的生命周期,包括单例(Singleton)、请求作用域(RequestScope)等。 #### 如何开始使用 Guice 1. **安装与配置**:首先需要将 Guice 的 JAR 文件添加到项目的类路径中。 2. **...

    Java依赖注入框架Guice2

    除了基本的绑定,Guice2还支持多种高级特性,如绑定到特定的实例、绑定到提供者(Provider)、绑定到范围(Scope)等。例如,可以使用`@Singleton`注解来确保在整个应用程序中只有一个`MyService`的实例: ```java ...

    Apress.Google.Guice.Agile.Lightweight.Dependency.Injection.Framework.Apr.2008

    5. **生命周期管理**:Guice支持多种生命周期策略,如单例(`@Singleton`)、原型(每次请求都创建新实例)等,还可以通过`@Scope`注解自定义范围。 6. **集成测试**:Guice与JUnit和其他测试框架良好集成,可以...

    jersey-guice-injection-sample:使用 Jersey + Guice 将 RequestScoped 对象注入 ContainerRequestFilter 的示例(使用 HK2 的 Guice-bridge)

    这可以通过 `requestScope()` 函数和 `toProvider(RequestScopedProvider.class)` 实现。`RequestScopedProvider` 是一个 HK2 的 Provider 类,负责在每个请求期间创建新的对象实例。 5. **编写 ...

    grpc-scopes:gRPC Guice范围

    gRPC Guice范围 RPC和gRPC的ListenerCall Guice范围,在将工作分派到其他线程时自动转移。 概述 提供rpcScope和listenerCallScope使用构建的Guice范围,当使用分派时,它们会自动将它们...包含上述Scope , ContextTrac

    guice-context-scopes:服务器端调用上下文Guice范围库

    在Guice中,"Scope"是一个重要的概念,它定义了对象的生命周期和可见范围。"guice-context-scopes"是专门为Guice设计的一个扩展库,用于在服务器端处理调用上下文的管理。 在服务器端应用中,如Web应用,通常需要...

    14 离开了Spring,IoC容器还可以怎么做?慕课专栏1

    - **Scope**:定义对象的作用域,如单例或多例。 - **Stage**:表示应用的运行阶段,用于不同场景的配置。 7. **Guice的依赖管理示例**:通过注解声明依赖,Guice会自动创建和注入对象。 8. **切面编程**:在...

    selenium-pom:Selenium页面对象模型

    Selenium页面对象模型 它是什么 Selenium POM(页面对象模型)是一个Java框架,提供了将您的Web应用程序描述为模型层次结构的功能。... &lt; scope&gt;test&lt;/ scope&gt; 文献资料 请访问我们的查找文档。 例子 可以在seleni

Global site tag (gtag.js) - Google Analytics