Springboot集成Websocket不能使用@Autowired注入service

在springboot使用websocket过程中,需要使用到@Autowired注入service

按照平时的方法注入:

@ServerEndpoint(value = "/websocket/{name}")
@Component
public class WebSocketService {
	@Autowired
    ChatRecodeService chatRecodeService

控制台报了空指针的异常


后来想了一下,会不会跟**@Autowired注解静态对象**实现的方法一样,尝试了一下:

@ServerEndpoint(value = "/websocket/{name}")
@Component
public class WebSocketService {
	private static ChatRecodeService chatRecodeService;

    @Autowired
    public void setChatRecodeService(ChatRecodeService chatRecodeService) {
        WebSocketService.chatRecodeService = chatRecodeService;
    }

发现通过**@Autowired注解setter方法**这种方式是可以解决空指针的问题。

@ServerEndpoint(value = "/websocket/{name}")
@Component
public class WebSocketService {
	private static ChatRecodeService chatRecodeService;

    @Autowired
    public WebSocketService (ChatRecodeService chatRecodeService) {
        WebSocketService.chatRecodeService = chatRecodeService;
    }

但是通过**@Autowired 注解构造函数**这种方式却不能解决这个错误。


找了一下类似的博客,发现原因是:

spring管理的是单例,而websocket管理的多对象,使用websocket每一次连接都会创建一个websocket对象

上一篇:hdu1233 最小生成树Prim算法和Kruskal算法


下一篇:最小生成树典型算法总结~