天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
Bug笔记0009
- 描述
- 报错
- 分析
- 解决
描述
基于springboot实现即时通讯websocket服务端启动项目时出现报错
报错
截图
报错代码
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-08-29 18:44:46.306 ERROR 25268 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ***************************
APPLICATION FAILED TO START
***************************Description:The bean 'webSocketHandlerServer', defined in class path resource [com/websocket/config/WebSocketHandlerConfig.class], could not be registered. A bean with that name has already been defined in file [E:\WORKPROJECTS\USPS\websocket_server\target\classes\com\websocket\server2\WebSocketHandlerServer.class] and overriding is disabled.Action:Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=trueProcess finished with exit code 1
大致意思就是会所这个bean已经存在,但启动时在另一个地方已经有了,所以在这里注册不了
分析
在报错的下方Action中已经给出了两个方法
将两个bean只保留一个,或者在配置中加入配置参数使bean重写打开,即如果有多个相同的bean就覆盖
由于我们配置的配置类中的确需要创建这样的bean,但在另一个类中也的确需要使用bean
既然这个改变不了,就只能选择后者
解决
在yml文件中配置参数
spring:main:allow-bean-definition-overriding: true
重启项目
项目正常运行
感谢阅读,祝君暴富!