今天想在websocket控制类@ServerEndpoint中修改用户的登陆状态,所以在websocket控制类中通过@Autowired注入了用户操作类UserMgrDao,本以为只是常规操作,没想到立刻被打了脸。呜呜呜…
@Component
@ServerEndpoint(value = "/websocket", configurator = WebSocketConfig.class)
public class SystemWebsocketServer extends BaseController {
/**
* 初始在线人数 用来记录当前在线连接数。应该把它设计成线程安全的
*/
private static int onlineNum = 0;
/**
* 线程安全的socket集合
*/
private static ConcurrentHashMap<String, Session> webSocketMap = new ConcurrentHashMap<>();
/**
* 会话 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private WebMessage webMessage;
@Autowired
private static UserMgrDao userMgrDao;
@Autowired
private static IAppChatService appChatServiceImpl;
这是我当时的代码,运行后报错,说UserMgrDao为null,但是我明明已经自动注入了啊,为什么其他的类注入没有问题但是websocket就会出错???
几经折腾…debug后还是不知道为什么注入会失败,只好问问万