我正在尝试将Spring集成到HiveMQ(MQTT代理)插件中。我已设法加载spring-context,并且实际上扫描了bean,并且可以使用@Inject代替@Autowire进行自动装配。
当我尝试在这个插件中使用Spring-Rabbit时,Spring框架抱怨它无法正确处理spring-context.xml中的xml。
引起:org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:The 匹配通配符是严格的,但是找不到声明 元素'兔子:连接工厂'。
春天背景如下:
<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns = 'http://www.springframework.org/schema/beans'
xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xmlns:context="http://www.springframework.org/schema/context"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation = 'http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit.xsd'>
<context:component-scan base-package="com.acme"/>
<rabbit:connection-factory id="connectionFactory"
addresses='localhost'
username='username'
password='password'
virtual-host='vhost'/>
</beans>
我按如下方式加载上下文:
ClassLoader classLoader = this.getClass().getClassLoader();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext();
ctx.setClassLoader(classLoader);
ctx.setConfigLocation("spring-context.xml");
ctx.refresh();
当我正常启动应用程序而没有HiveMQ插件的上下文时,它可以找到所需的一切。
任何提示在哪里寻找?