我正在尝试将服务外观实现到服务中以支持向后兼容性。
但是,我在 Guise 动态绑定中遇到了问题。我需要根据客户端应用程序请求的版本绑定相应的实现类。
有谁知道如何在 Google-Guice 中实现动态绑定?
我正在尝试将服务外观实现到服务中以支持向后兼容性。
但是,我在 Guise 动态绑定中遇到了问题。我需要根据客户端应用程序请求的版本绑定相应的实现类。
有谁知道如何在 Google-Guice 中实现动态绑定?
您可以使用绑定注释:
bind(Facade.class).annotatedWith(VersionOne.class).to(OldFacade.class);
bind(Facade.class).annotatedWith(VersionTwo.class).to(NewFacade.class);
并有如下代码:
@Inject @VersionOne Facade oldFacade;
@Inject @VersionTwo Facade newFacade;
if (version == 1)
return oldFacade
else
return newFacade;
或者您可以使用多重绑定:
MapBinder<Integer, Facade> mapBinder = MapBinder.newMapBinder(binder(), Integer.class, Facade.class);
mapBinder.addBinding(1).to(OldFacade.class);
mapBinder.addBinding(2).to(NewFacade.class);
然后你像这样使用它:
@Inject Map<Integer, Facade> facadeMap;
return facadeMap.get(version);