【发布时间】:2013-06-07 07:53:20
【问题描述】:
我有一个 TypeConverter 类,它设置在 blueprint.xml 文件中,并通过构造函数注入依赖项。我可以验证在将 OSGI 包部署到 FuseESB 时是否创建了该类。
我在骆驼上下文中使用 convertBodyTo 元素应用类型转换器
<convertBodyTo type="com.example.RegisterRequest" />
但是在构造转换器时失败并出现实例化异常
Caused by: java.lang.InstantiationException: com.example.RegisterRequestConverter
at java.lang.Class.newInstance0(Class.java:359)[:1.7.0_21]
at java.lang.Class.newInstance(Class.java:327)[:1.7.0_21]
at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:1166)
如果我添加一个 noarg 构造函数,则创建转换器 - 但显然没有它的依赖关系。
类型转换器http://camel.apache.org/type-converter.html 的 Camel 文档指出
鼓励使用静态方法来减少缓存,但实例方法 很好,特别是如果你想允许可选依赖 注入自定义转换器
是否可以通过 xml 定义路由并且仍然注入类型转换器依赖项?
【问题讨论】:
标签: osgi apache-camel blueprint-osgi