springboot websocket service注入失败?

类加上@Compent注解就被spring托管了,可是为什么注入service会失败呢?
clipboard.png

启动过程:

clipboard.png

页面:

clipboard.png

控制台报错:

clipboard.png

阅读 15.7k
9 个回答

每次回答自己提出的问题的基本都是我了,不过也好,说明我解决了。

clipboard.png

MyWebSocket类中注意下面三个地方

clipboard.png

clipboard.png

clipboard.png

楼上的回答未免太过复杂,搞清楚为什么不能注入就能很容易解决问题了

/**
 * WebSocket 配置
 *
 * @author Angus Liu
 * @data 2018/9/13
 */
@Configuration
public class WebSocketConfig {

    /**
     * ServerEndpointExporter 用于扫描和注册所有携带 ServerEndPoint 注解的实例,
     * 若部署到外部容器 则无需提供此类。
     *
     * @return
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }


    /**
     * 因 SpringBoot WebSocket 对每个客户端连接都会创建一个 WebSocketServer(@ServerEndpoint 注解对应的) 对象,Bean 注入操作会被直接略过,因而手动注入一个全局变量
     *
     * @param messageService
     */
    @Autowired
    public void setMessageService(MessageService messageService) {
        WebSocketServer.messageService = messageService;
    }
}
/**
 * WebSocket 聊天服务端
 *
 * @author Angus Liu
 * @date 2018/09/13
 */
@Component
@ServerEndpoint(value = "/web-socket-server/{account}")
public class WebSocketServer {
    // 待注入对象声明为全局变量
    public static MessageService messageService;
    // 注入代码也可以直接写在这里
    ...
}
新手上路,请多包涵

谢谢大哥!偶像

新手上路,请多包涵

谢谢大佬,感谢!

新手上路,请多包涵

我想问下 没能注入的原因是什么?,照理说应该是可以注入的啊

新手上路,请多包涵

感谢大佬,祝你长命百岁!~~~

新手上路,请多包涵

你这个代码写在 main方法里面,在打包上传后,代码不会直接跑main方法的

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题