如何精简Spring STOMP WebSocket客户端依赖 改用Tyrus体积更小吗?
体积对比结论
Tyrus纯客户端依赖的体积远小于tomcat-embed-websocket方案。tomcat-embed-websocket需要依赖完整的tomcat-embed-core,整套加起来体积接近2MB,而Tyrus最小客户端依赖组合仅需不到800KB,没有冗余的Web容器相关组件,非常适合纯WebSocket客户端场景。
仅客户端所需的Tyrus依赖配置
你原来的spring-boot-starter-websocket排除spring-boot-starter-web的配置可以保持不变,直接把原有的tomcat-embed-websocket依赖替换为以下配置即可:
<!-- Tyrus客户端核心依赖,1.x分支对应javax.websocket(适配Spring Boot 2.x),2.x分支对应jakarta.websocket(适配Spring Boot 3+) --> <dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <version>1.20</version> <exclusions> <!-- 排除服务端相关冗余组件 --> <exclusion> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-server</artifactId> </exclusion> <!-- 排除非必需的扩展功能 --> <exclusion> <groupId>org.glassfish.tyrus.ext</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <!-- 基于JDK内置HTTP客户端实现的传输层,无需引入额外Grizzly等容器依赖,进一步减小体积 --> <dependency> <groupId>org.glassfish.tyrus.bundles</groupId> <artifactId>tyrus-standalone-client-jdk</artifactId> <version>1.20</version> </dependency>
适配注意事项
- Spring的
StandardWebSocketClient会自动扫描类路径下的javax.websocket.ContainerProvider实现,切换为Tyrus后无需修改任何业务代码即可直接运行。 - 无需额外单独引入
javax.websocket-api或jakarta.websocket-api依赖,Tyrus包已经内置了对应版本的API规范,可避免版本冲突。
内容的提问来源于stack exchange,提问作者Thiago Sayão
相关产品推荐
相关产品推荐

