我为一组特定的请求设置了一个过滤器,即通过我的Guice Listener进行* / dispatch。
在此过滤器中,我想基于请求URI更改每个请求中类型BaseService(包含一个方法的接口)的绑定。即如果URI是/ hello / dispatch我希望BaseService绑定到HelloServiceImpl else,如果URI是/ bye / dispatch我想绑定到ByeServiceImpl。两者都实现了BaseService。
现在在我的随机类中的某个地方参与servlet请求处理我希望注入特定于当前请求的BaseService的适当实现。
这可能吗?怎么样 ?提前谢谢。
答案 0 :(得分:2)
考虑使用工厂模式提供不同类型的BaseService。
public interface ServiceFactory
{
public BaseService create(String uri);
}
public class ServiceFactoryImpl implements ServiceFactory
{
@Override
public BaseService create(String uri)
{
if(uri.equals("/hello/dispatch"))
return new HelloServiceImpl();
else if (uri.equals("/bye/dispatch"))
return new ByeServiceImpl();
return null;
}
}
然后是模块中的工厂。
bind(ServiceFactory.class).to(ServiceFactoryImpl.class);
并将其注入请求。