Maven Spring与Spring引导应用程序的集成
嗨,我是一个新手,我正在尝试实现SpringMQTT与SpringBoot应用程序的集成,下面是我的主要类Maven Spring与Spring引导应用程序的集成,maven,spring-boot,Maven,Spring Boot,嗨,我是一个新手,我正在尝试实现SpringMQTT与SpringBoot应用程序的集成,下面是我的主要类 package com.ehydromet.springboot; import org.eclipse.paho.client.mqttv3.IMqttClient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootAppl
package com.ehydromet.springboot;
import org.eclipse.paho.client.mqttv3.IMqttClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.MessageChannel;
import com.ehydromet.outbound.MqttClientFactoryBean;
import com.ehydromet.outbound.MqttSendingMessageHandler;
@EntityScan(basePackages = {"com.ehydromet.entity"})
@SpringBootApplication(scanBasePackages={"com.ehydromet"})
public class SpringBootStandAloneApp extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
System.out.println("hi i am servlet initializer");
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MqttConfiguration.class);
MessageChannel messageChannel = context.getBean("messages", MessageChannel.class);
messageChannel.send(MessageBuilder.withPayload("Josh and Andy say hi!".getBytes()).build());
return application.sources(SpringBootStandAloneApp.class);
}
public static void main(String[] args) {
System.out.println("hi i am main function");
SpringApplication.run(SpringBootStandAloneApp.class, args);
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MqttConfiguration.class);
MessageChannel messageChannel = context.getBean("messages", MessageChannel.class);
messageChannel.send(MessageBuilder.withPayload("Josh and Andy say hi!".getBytes()).build());
}
@Configuration
@ImportResource("simple-integration.xml")
public static class MqttConfiguration {
@Bean
public MqttClientFactoryBean mqttClientFactoryBean() {
return new MqttClientFactoryBean("localhost");
}
@Bean
public MqttSendingMessageHandler mqttSendingMessageHandler(IMqttClient client) {
return new MqttSendingMessageHandler(client, "cats");
}
}
}
下面是spring-integration.xml
<?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:int="http://www.springframework.org/schema/integration"
xmlns:mqtt="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd ">
<int:channel id="messages"/>
<int:outbound-channel-adapter ref="mqttSendingMessageHandler" channel="messages" />
</beans>
例外情况的原因是
Could not open ServletContext resource [/simple-integration.xml]
ServletContextResources:
解释web应用程序根目录中的相对路径
改用
@ImportResource("classpath:simple-integration.xml")
@ImportResource("classpath:simple-integration.xml")