开发者

What is a good usecase for Guice Mapbinder?

I've seen it used, but I'm not sure the usage were good usecase examples. Do you have examples of idiomatic usages of Guice Mapbinder? (Cases where Mapbinder开发者_StackOverflow社区 is really the correct tool to solve a problem)


Offhand, it looks like a reasonable way to create a registry of runtime-named implementations of a common interface. Consider selecting one of many plugins/modes/whatever from a command line or configuration file: the desired injection can't be known at compile time. A MapBinder provides an easy runtime lookup without resorting to type-switching.


I extensively use it in Guts-GUI. You can take a look, in particular, at the ResourceModule, where it is used to map the right ResourceConverter<T> for a given type T:

Map<TypeLiteral<?>>, ResourceConverter<?>>

The MapBinder is directly created in the Resources helper class.

This way, any module can add its own resource converters for its own types, e.g. MessageModule adds its own converters.

I also used it as Map<Integer, WindowProcessor>> in WindowsModule to define an ordered list of WindowProcessors to be applied, one after another, to a newly created window..

Once again, this allows various modules to insert their own processor to the list applied to every window: ResourceModule uses it to add the ability of automatic injection of i18n resources to windows.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜