如何将ObjectMapper注入RouteBuilder

时间:2019-01-30 14:34:06

标签: java apache-camel

现在,我在处理器中获取objectMapper,如下所示:

.process(exchange -> {
         var objectMapper = getContext().getRegistry()
                        .lookupByNameAndType("json-jackson", ObjectMapper.class);
      ...

我尝试使用@BeanInject("json-jackson")注入该对象,但是我猜我没有正确使用它,因为它为null。我没有使用Spring或Guice,只是使用了普通的Java,而是使用new初始化了路由生成器。

此外,我尝试将查找放入路由生成器的构造函数中,但在那里收到空值。

1 个答案:

答案 0 :(得分:0)

如果您不使用任何IoC框架并通过new自己创建类,则不会自动发生依赖项注入。然后,您需要查找并自行设置对象。例如,您可以向其添加getter / setter,然后通过new创建它,然后查找对象并随后调用setter。

如果您有权访问CamelContext,则可以像上面一样进行查找,否则,您将需要通过实际使用的注册表(如果使用的是JNDI或其他方式)进行查找。注意Camel默认情况下将使用JNDI注册表,但是您可以在创建CamelContext实例时将其提供给CamelContext。

如果您有CamelContext,也可以使用其注入器创建一个新实例,该实例对依赖项注入提供一些支持(如果使用Camel的注释)。 getInjector中有一个CamelContext,该API应该具有通过类类型创建新实例的API。