你如何使用Guice种植非范围的命名绑定?

时间:2014-05-13 15:31:18

标签: java guice

使用Guice构建基于Web的应用程序并具有这种特殊情况 -

我使用了很多轻量级的方法拦截器。

我的问题是 - 我有一个命名的绑定说" Operation.Current"当其中一个拦截器在单个请求线程中执行时,需要更改其值。因此绑定值在单个请求线程内多次更改。我需要根据需要注入此值。

目前我正在使用

request.setAttribute(Key.get(Operation.class, Names.named("Operation.Current")).toString(), op);

在我的GuiceFilter中初始化值。我想在拦截器执行时替换这个值。

所以我需要通过请求多次将请求中出现的值作为属性重新播种。

解决此问题的更好方法是什么?因为我发现值不是真正意义上的RequestScoped。所以理想情况下,这个值应该是非范围的并绑定名称。

但是如何在Guice模块之外更改我需要的值?

1 个答案:

答案 0 :(得分:0)

创建进样器后,无法修改模块绑定。如果您事先知道所有实例,请尝试MapBinder,否则请考虑使用provider-binding,然后您可以为每次调用动态评估所需的实例。