期望有一个匹配的bean,但发现了2个



我使用websocket从服务器发送消息到客户端。当我添加这段代码到控制器:

private SimpMessagingTemplate template;
@Autowired
public InstanceMessageController(SimpMessagingTemplate template) {
     this.template = template;
}

:

   @Controller    
   public class InstanceMessageController {     
    private SimpMessagingTemplate template;
    @Autowired
    public InstanceMessageController(SimpMessagingTemplate template) {
        this.template = template;
    }
    @MessageMapping("/vehicle/status")
    @SendTo("/topic/status")
    public void subscribeVehicleStatus(HelloMessage message) throws Exception {
        try {
            for (int i = 0; i < 10; i++) {
                //template.convertAndSend("/topic/location", "aaaaaaa");
            }
        } catch (Exception e) {
            log.error(e);
        }
    }
}

抛出错误:

       [ERROR]-[2016年-10月-19日17:53:25.026]-[RMI TCP Connection(2)-127.0.0.1]-[org.springframework.web.context.ContextLoader]-
{Context initialization failed}
                org.springframework.beans.factory.UnsatisfiedDependencyException: 
        Error creating bean with name 
        com.zw.socket.service.controller.InstanceMessageController0 defined in class path resource [spring-config/spring-socket-servlet.xml]: 
    Unsatisfied dependency expressed through constructor parameter 0; 
    nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: 
    No qualifying bean of type [org.springframework.messaging.simp.SimpMessagingTemplate] is defined: 
    expected single matching bean but found 2:org.springframework.messaging.simp.SimpMessagingTemplate#0,brokerMessagingTemplate

当删除第一个代码片段时,程序工作正常。哪里出了问题?春季版:4.0.4.RELEASE。我该怎么办?bean配置:

<bean class="com.zw.socket.service.controller.InstanceMessageController"></bean>

检查配置文件(如:spring-socket-servlet.xml)已经有重复的配置:

<websocket:message-broker application-destination-prefix="/app">
    <websocket:stomp-endpoint path="/vehicle">
        <websocket:handshake-interceptors>
            <bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/>
        </websocket:handshake-interceptors>
        <websocket:sockjs session-cookie-needed="true" />
    </websocket:stomp-endpoint>
    <websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>

如果配置文件和代码都给出。这将导致2个SimpMessagingTemplate实例。删除XML配置,将修复它

最新更新