@ServerEndpoint("/talk/server")
@Component
public class TalkController {
private TalkService talkService;
@Resource
public void setTalkService(TalkService talkService){
System.out.println("注入talkservice:"+talkService);
this.talkService = talkService;
}
}类似这样,执行也注入了,但是每次链接websocket都显示talkService是null
这个是因为TalkController每次客户端连接都会创建新对象,而后期创建对象并没有从Spring容器中获取,故而talkService 是null
解决方案一个是注入applicationContext,然后代码从applicationContext.getBean()获取service
还有就是可以干脆把talkService改成static,这样SpringBoot启动扫描注入的时候,一次也就注入进去了。