其他分享
首页 > 其他分享> > WebScoket中不能直接@resource来通过spring管理对象

WebScoket中不能直接@resource来通过spring管理对象

作者:互联网

不能直接在websocket类中通过@resource来创建对象

需要通过创建静态参数 ,再通过@resource注入

第一步创建websocket静态参数

@Component
@ServerEndpoint("/live-server/liveChat/websocket/{roomId}/{userId}")
public class WebSocket {

    public static LiveService liveService;
    public static ObjectMapper objectMapper;
    public static StringRedisTemplate stringRedisTemplate;
    // 使用map来收集session,key为roomId,value为同一个房间的用户集合
    private static Map<Long, Set<Session>> rooms = new ConcurrentHashMap();

    private static ConcurrentHashMap<Long, Session> sessionMap = new ConcurrentHashMap<>();

第二步 websocket配置类

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter(){

        return new ServerEndpointExporter();
    }

    @Resource
    public void setMessageService(LiveService liveService){
        WebSocket.liveService = liveService;
    }

    @Resource
    public void setRedis(StringRedisTemplate stringRedisTemplate){
        WebSocket.stringRedisTemplate = stringRedisTemplate;
    }
    @Resource
    public void setObjectMapper(ObjectMapper objectMapper){
        WebSocket.objectMapper = objectMapper;
    }

标签:websocket,spring,stringRedisTemplate,WebSocket,static,liveService,resource,WebSc
来源: https://blog.csdn.net/Lelouch_l/article/details/110120950