使用Guice构建基于Web的应用程序并具有这种特殊情况 -
我使用了很多轻量级的方法拦截器。
我的问题是 - 我有一个命名的绑定说" Operation.Current"当其中一个拦截器在单个请求线程中执行时,需要更改其值。因此绑定值在单个请求线程内多次更改。我需要根据需要注入此值。
目前我正在使用
request.setAttribute(Key.get(Operation.class, Names.named("Operation.Current")).toString(), op);
在我的GuiceFilter中初始化值。我想在拦截器执行时替换这个值。
所以我需要通过请求多次将请求中出现的值作为属性重新播种。
解决此问题的更好方法是什么?因为我发现值不是真正意义上的RequestScoped。所以理想情况下,这个值应该是非范围的并绑定名称。
但是如何在Guice模块之外更改我需要的值?
答案 0 :(得分:0)
创建进样器后,无法修改模块绑定。如果您事先知道所有实例,请尝试MapBinder,否则请考虑使用provider-binding,然后您可以为每次调用动态评估所需的实例。