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里,你只需要做以下绑定就可以一劳永逸了.
分享到:
相关推荐
拦截器需要使用 `@Singleton` 或 `@Scope("prototype")` 来定义其生命周期。 最后,将拦截器与 Shiro 的注解关联起来。这通常通过在 Guice 的模块中使用 `bindInterceptor()` 方法完成,指定哪些类或方法应该被拦截...
<scope>test</scope> 使用 Acai 进行测试注入@RunWith(JUnit4.class) public class SimpleTest { @Rule public Acai acai = new Acai(MyTestModule.class); @Inject private MyClass foo; ...
- **作用域**:Guice 允许指定对象的生命周期,包括单例(Singleton)、请求作用域(RequestScope)等。 #### 如何开始使用 Guice 1. **安装与配置**:首先需要将 Guice 的 JAR 文件添加到项目的类路径中。 2. **...
除了基本的绑定,Guice2还支持多种高级特性,如绑定到特定的实例、绑定到提供者(Provider)、绑定到范围(Scope)等。例如,可以使用`@Singleton`注解来确保在整个应用程序中只有一个`MyService`的实例: ```java ...
5. **生命周期管理**:Guice支持多种生命周期策略,如单例(`@Singleton`)、原型(每次请求都创建新实例)等,还可以通过`@Scope`注解自定义范围。 6. **集成测试**:Guice与JUnit和其他测试框架良好集成,可以...
这可以通过 `requestScope()` 函数和 `toProvider(RequestScopedProvider.class)` 实现。`RequestScopedProvider` 是一个 HK2 的 Provider 类,负责在每个请求期间创建新的对象实例。 5. **编写 ...
gRPC Guice范围 RPC和gRPC的ListenerCall Guice范围,在将工作分派到其他线程时自动转移。 概述 提供rpcScope和listenerCallScope使用构建的Guice范围,当使用分派时,它们会自动将它们...包含上述Scope , ContextTrac
在Guice中,"Scope"是一个重要的概念,它定义了对象的生命周期和可见范围。"guice-context-scopes"是专门为Guice设计的一个扩展库,用于在服务器端处理调用上下文的管理。 在服务器端应用中,如Web应用,通常需要...
- **Scope**:定义对象的作用域,如单例或多例。 - **Stage**:表示应用的运行阶段,用于不同场景的配置。 7. **Guice的依赖管理示例**:通过注解声明依赖,Guice会自动创建和注入对象。 8. **切面编程**:在...
Selenium页面对象模型 它是什么 Selenium POM(页面对象模型)是一个Java框架,提供了将您的Web应用程序描述为模型层次结构的功能。... < scope>test</ scope> 文献资料 请访问我们的查找文档。 例子 可以在seleni