Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice中的作用域提供程序_Java_Guice - Fatal编程技术网

Java Guice中的作用域提供程序

Java Guice中的作用域提供程序,java,guice,Java,Guice,范围界定对Guice提供者有效吗?假设我有一个FooProvider,并像这样绑定: bind(Foo.class).toProvider(FooProvider.class).inScope(ServletScopes.REQUEST) 每个请求是否会实例化一次FooProvider bind(Foo.class).toProvider(FooProvider.class).in(ServletScopes.REQUEST); 但如果不是这样,这应该可以按预期工作。否,FooProvide

范围界定对Guice提供者有效吗?假设我有一个
FooProvider
,并像这样绑定:

bind(Foo.class).toProvider(FooProvider.class).inScope(ServletScopes.REQUEST)
每个请求是否会实例化一次
FooProvider

bind(Foo.class).toProvider(FooProvider.class).in(ServletScopes.REQUEST);

但如果不是这样,这应该可以按预期工作。

否,
FooProvider
将由Guice仅实例化一次

作用域应用于绑定,这意味着在您的示例中,如果将
Foo
注入到另一个请求作用域对象中,Guice将调用
FooProvider.get()
,并将返回的
Foo
注入到该原始对象中

如果您希望将范围应用于FooProvider,那么您必须执行类似的操作(注意:我没有检查它,但它应该可以工作):


初始测试表明,这同时作用于提供程序和提供的对象。在大多数情况下,这可能是需要的。
bind(FooProvider.class).in(ServletScopes.REQUEST);
bind(Foo.class).toProvider(FooProvider.class).in(ServletScopes.REQUEST);