Java 骆驼代理抱怨类型错误

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

我将基于spring引导的应用程序配置为使用activemq/jms的远程处理。侦听部分运行良好,但我在实现发送部分时遇到问题

对于发送者,我回到了“经典”camel和spring,因为我找到了更多的工作示例,但仍然收到一个错误:

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创建代理。其中一个错了吗?或者这是你的问题?在我看到的所有示例中,代理都需要基于接口。就我个人而言,我更喜欢没有接口的解决方案,但规范说我需要它。在代码中使用接口也更正确。您只能将代理强制转换为接口,因为代理正在实现该接口。