Java 骆驼代理抱怨类型错误
我将基于spring引导的应用程序配置为使用activemq/jms的远程处理。侦听部分运行良好,但我在实现发送部分时遇到问题 对于发送者,我回到了“经典”camel和spring,因为我找到了更多的工作示例,但仍然收到一个错误:Java 骆驼代理抱怨类型错误,java,spring,apache-camel,activemq,spring-boot,Java,Spring,Apache Camel,Activemq,Spring Boot,我将基于spring引导的应用程序配置为使用activemq/jms的远程处理。侦听部分运行良好,但我在实现发送部分时遇到问题 对于发送者,我回到了“经典”camel和spring,因为我找到了更多的工作示例,但仍然收到一个错误: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'myProxy' must be of type [foo.bar.YouNameIt], but was
org.springframework.beans.factory.BeanNotOfRequiredTypeException:
Bean named 'myProxy' must be of type [foo.bar.YouNameIt],
but was actually of type [com.sun.proxy.$Proxy83]
这是我尝试加载代理定义的方式:
ApplicationContext context = new ClassPathXmlApplicationContext("config/spring.xml");
YouNameIt youNameIt = context.getBean("myProxy", YouNameIt.class);
这是spring.xml中的条目:
<camel:proxy id="myProxy"
serviceInterface="foo.bar.IYouNameIt"
serviceUrl="activemq:queue:site12345" />
我做错了什么?访问接口
IYouNameIt
,而不是实现类YouNameIt
:
IYouNameIt youNameIt = context.getBean("myProxy", IYouNameIt.class);
有关完整的Spring远程处理示例,请参阅。在Spring配置中,在使用YouNameIt的代码示例中,为IYouNameIt创建代理。其中一个错了吗?或者这是你的问题?在我看到的所有示例中,代理都需要基于接口。就我个人而言,我更喜欢没有接口的解决方案,但规范说我需要它。在代码中使用接口也更正确。您只能将代理强制转换为接口,因为代理正在实现该接口。