我有一个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定义路由并且仍然具有类型转换器依赖注入?
答案 0 :(得分:4)
不,这是不可能的。类型转换器应该是
不要使用IoC等。
如果你想要IoC等,那么你需要手动将实例注册到Camel TypeConverterRegistry中。这可能有点麻烦。