spring整合websocket

本文介绍了在Spring中整合WebSocket的两种方式,重点讲解了使用Spring-websocket的要求和遇到的Maven依赖问题,以及解决报错的策略。在实践中,由于版本不匹配导致的jar冲突和WebSocket消息乱码问题,作者提供了相应的解决方案,强调了bean和tag顺序的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现websocket有两种方式,一个是用tomcat的websocket,tomcat版本要求tomcat7.0.27以上,另外一个就是用spring整合好的的spring-websocket了,要求至少spring4.0版本以上,同时两者都需要JDK1.7以上。

maven引入spring-websocket时,pom.xml报错:
这里写图片描述

刚开始以为是与其他依赖版本冲突,折腾一番发现maven仓库并没成功下载到spring-websocket的jar包,测试了几个版本,发现只有4.3.5.RELEASE可以成功(这个要看仓库地址有没有提供依赖下载了)。
这里写图片描述
以下这个就是jar报冲突导致的报错了,解决办法就是spring-websocket的jar包要与spring等jar包的版本一致,本人用的都是4.3.5.RELEASE。

[ERROR] 2018-08-24 11:27:45 :Context initialization failed
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webSocketHandlerMapping' defined in class path resource [org/springframework/web/socket/config/annotation/DelegatingWebSocketConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'webSocketHandlerMapping' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WebSocketPushHandler': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.qly.b2b.controller.WebSocketPushHandler.afterConnectionEstablished(org.springframework.web.socket.WebSocketSession) throws java.lang.Exception; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.web.socket.WebSocketSession] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at or
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值