问题记录:springboot里websocket调用service层

文章讲述了如何在Java的Socket类中添加静态属性ApplicationContext,并在启动类中设置该属性,以便在业务方法中通过静态属性获取并使用Service类对象,如KeyMsgService,实现类方法的调用。
摘要由CSDN通过智能技术生成

 1.在socket类内添加静态属性以及方法

private static ApplicationContext applicationContext;

    public static void setApplicationContext(ApplicationContext context) {
        applicationContext = context;
    }

 2.将启动类修改成这样

public class MbKeyApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext =   SpringApplication.run(MbKeyApplication.class, args);
        WebSocketServer.setApplicationContext(applicationContext);

        //SpringApplication.run(MbKeyApplication.class,args);
        log.info("服务启动成功");
    }
}

3. 在你的业务方法上用创建的静态属性获取service的类对象就可以使用啦

KeyMsgService bean = applicationContext.getBean(KeyMsgService.class);

 例如:

/**
     * 连接建立成功调用的方法
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("username") String username) {
        sessionMap.put(username, session);
        log.info("有新用户加入,username={}, 当前在线人数为:{}", username, sessionMap.size());

        KeyMsgService bean = applicationContext.getBean(KeyMsgService.class);
    
}

总结:获取到启动类返回的对象并把它赋值给socket的静态属性applicationContext,即可使用此对象调用类方法。

(小白不懂原理,请大神指教!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot提供了对WebSocket的支持,可以很方便地进行WebSocket的测试。你可以按照以下步骤进行测试: 1. 首先,在你的Spring Boot项目中添加相关依赖。在pom.xml文件中,添加以下内容: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 然后,创建一个WebSocket处理器类。这个类需要继承自`WebSocketHandler`,并实现其中的方法。你可以在这些方法中处理WebSocket的连接、消息和关闭等事件。 3. 接下来,创建一个配置类,用于配置WebSocket的相关信息。在这个类中,你需要注册上一步创建的WebSocket处理器,并配置WebSocket的访问路径等信息。 4. 最后,启动你的Spring Boot应用程序。然后,你可以使用浏览器或WebSocket客户端工具来测试WebSocket连接。例如,你可以使用浏览器的开发者工具中的Console面板来发送和接收WebSocket消息。 通过以上步骤,你就可以进行Spring BootWebSocket测试了。在测试过程中,你可以根据业务逻辑修改调用Server的相关方法,以满足你的需求。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [SpringBoot整合WebSocket测试](https://blog.csdn.net/weixin_48732663/article/details/114086581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [通讯模型封装,基于DIOCP YxdIocp包含有支持大并发的TCP、HTTP、UDP、WebSocket服务组件](https://download.csdn.net/download/qq_35831906/88233737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值