用于动态创建对象的Guice注入

时间:2017-08-03 14:29:19

标签: java guice

我有一个" Handler"消息队列的接口,具有方法:

boolean canHandle(message);
void handle(message);

然后我有这个接口的多个实现,每个实现canHandle()某些类型的消息

当消息到达时,我会执行以下操作:

for (Handler handler : handlers) {
    if handler.canHandle(message)
        handle(message)

所以,我需要建立一个"启用处理程序列表"必须在配置文件中指定。

我可以通过类名(FQCN)指定启用的处理程序,或者通过某个名称注释该类并在配置上引用此名称。

例如:

enabledHandlers = ("com.domain.handlers.HandlerA", "com.domain.handlers.HandlerB", )
#or
enabledHandlers = ("HandlerAAnnotation", "HandlerBAnnotation", )

无论如何,不​​知怎的,我需要在我的服务中构建这些处理程序,并且它们需要注入参数。

我相信inject.getInstance(clazz)可以用来构建这些对象,但是使用#34;注入器"并不是很有意义。当我需要创建这些类时,绕过我的服务 我也可以通过反射创建它们"手动"通过clazz.getConstructor(...)。newInstance(...),但它看起来很脏。

还有其他想法吗?

谢谢!

0 个答案:

没有答案