主流的 Java 微信公众平台开源框架
以下是几个在 GitHub 上非常流行且维护良好的 Java 微信公众号开源项目,它们各有特点:

WxJava (强烈推荐)
这是目前 Java 生态中最流行、功能最全面、社区最活跃 的微信公众号开发框架,如果你要开始一个新项目,首选 WxJava。
- GitHub 地址: https://github.com/Wechat-Group/WxJava
- 核心特点:
- 功能全面: 覆盖了微信公众平台几乎所有 API,包括公众号、小程序、企业微信、微信支付等。
- 模块化设计: 将不同功能(如公众号、小程序、支付)拆分成不同的模块,你可以按需引入,避免臃肿。
- 强大的社区支持: 拥有非常活跃的社区和 Issue 区,遇到问题很容易找到解决方案或得到作者的帮助。
- 文档完善: 提供了非常详尽的中文文档和示例代码,上手快。
- 持续更新: 微信官方 API 更新后,WxJava 通常会很快跟进更新。
- 适用场景: 几乎所有类型的公众号开发,从简单的自动回复到复杂的业务逻辑集成。
jeecg-boot (低代码平台,集成微信)
Jeecg-Boot 是一个基于代码生成器的低代码开发平台,它内置了对微信公众号的集成,适合快速开发企业级应用。
- GitHub 地址: https://github.com/jeecgboot/jeecg-boot
- 核心特点:
- 一站式解决方案: 提供了从后端管理前端到微信端的一整套解决方案。
- 代码生成器: 可以快速生成 CURD(增删改查)模块,极大提高开发效率。
- 内置微信模块: 已经集成了公众号的授权、菜单管理、素材管理、模板消息等功能,开箱即用。
- 前后端分离: 基于 Vue + Ant Design 的前端,技术栈现代。
- 适用场景: 企业内部管理系统、SaaS 平台、需要快速搭建带有公众号功能的管理后台。
other (其他备选)
- wechat-sdk: 一个比较轻量级的微信 SDK,专注于提供 API 调用能力,适合对框架依赖较小、喜欢自己搭建项目结构的开发者。
- 微信官方 Java SDK: 微信官方提供的 SDK,功能相对基础,更新可能不如社区框架及时,适合需要官方最高保证度的场景,但通常 WxJava 会更好用。
如何选择?
| 特性 | WxJava | Jeecg-Boot |
|---|---|---|
| 定位 | 功能全面的 SDK | 低代码开发平台 |
| 优点 | 灵活、强大、社区好、文档全 | 开发快、集成度高、自带管理后台 |
| 缺点 | 需要自己搭建项目结构,集成工作较多 | 框架较重,学习曲线稍陡,可能包含不需要的功能 |
| 适合人群 | 所有 Java 开发者,尤其是想深入定制公众号逻辑的 | 需要快速开发企业级应用的管理后台,对低代码有需求的团队 |
- 如果你只想做一个公众号,或者想把它集成到现有的 Spring Boot/Spring Cloud 项目中,选 WxJava。
- 如果你想快速开发一个包含公众号功能的企业管理系统,不希望从零开始写后台,选 Jeecg-Boot。
使用 WxJava 开发一个简单公众号的流程示例
这里以最流行的 WxJava 为例,展示一个简单的自动回复功能是如何实现的。

项目准备
- 环境: JDK 8+, Maven, Spring Boot
- 获取配置信息: 登录 微信公众平台,在“开发” -> “基本配置”中获取:
AppID (应用ID)AppSecret (应用密钥)Token (令牌)EncodingAESKey (消息加解密密钥)
创建 Spring Boot 项目并引入依赖
在 pom.xml 中添加 WxJava 的依赖:
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp-spring-boot-starter</artifactId>
<version>最新版本号</version> <!-- 请去 GitHub 查找最新版本 -->
</dependency>
配置公众号信息
在 application.yml 或 application.properties 中配置:
wx:
mp:
configs:
- appId: 你的AppID
secret: 你的AppSecret
token: 你的Token
aesKey: 你的EncodingAESKey # 可选,如果不加密可以不填
处理微信服务器验证(接入)
微信服务器会发送一个 GET 请求来验证你的服务器地址,你需要创建一个 Controller 来处理这个请求。
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/wx")
public class WxController {
@Autowired
private WxMpService wxMpService;
@Autowired
private WxMpMessageRouter messageRouter;
/**
* 处理微信服务器发来的验证请求
*/
@GetMapping(produces = "text/plain;charset=utf-8")
public String authGet(@RequestParam(name = "signature", required = false) String signature,
@RequestParam(name = "timestamp", required = false) String timestamp,
@RequestParam(name = "nonce", required = false) String nonce,
@RequestParam(name = "echostr", required = false) String echostr) {
if (wxMpService.checkSignature(timestamp, nonce, signature)) {
return echostr;
}
return "非法请求";
}
/**
* 处理微信服务器发来的消息
*/
@PostMapping(produces = "application/xml;charset=UTF-8")
public String post(@RequestBody String requestBody,
@RequestParam("signature") String signature,
@RequestParam("timestamp") String timestamp,
@RequestParam("nonce") String nonce,
@RequestParam("openid") String openid,
@RequestParam("encrypt_type") String encryptType,
@RequestParam("msg_signature") String msgSignature) {
if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
throw new IllegalArgumentException("非法请求,可能伪造请求!");
}
// 消息解密
WxMpXmlMessage inMessage = null;
if ("aes".equals(encryptType)) {
inMessage = WxMpXmlMessage.fromEncryptedXml(requestBody, wxMpService.getWxMpConfigStorage(), timestamp, nonce, msgSignature);
} else {
inMessage = WxMpXmlMessage.fromXml(requestBody);
}
// 路由处理消息
WxMpXmlOutMessage outMessage = this.messageRouter.route(inMessage);
if (outMessage == null) {
return "";
}
return outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage());
}
}
实现自动回复逻辑
WxJava 使用了责任链模式来处理消息,你需要创建一个 Handler 并注册到 WxMpMessageRouter 中。

import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class SimpleTextHandler implements WxMpMessageHandler {
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxSessionManager sessionManager) {
// 1. 判断是否是文本消息
if ("text".equals(wxMessage.getMsgType())) {
// 2. 获取用户发送的内容
String content = wxMessage.getContent();
// 3. 构造回复内容
String replyContent = "你发送的是: " + content;
// 4. 创建一个文本回复消息
WxMpXmlOutTextMessage outMessage = WxMpXmlOutTextMessage.newTextMessage(replyContent);
// 5. 设置接收方和发送方
outMessage.setToUser(wxMessage.getFromUser());
outMessage.setFromUser(wxMessage.getToUser());
return outMessage;
}
// 其他类型的消息不做处理,返回 null
return null;
}
}
注册 Handler
创建一个配置类,将你的 Handler 注册到路由器中。
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class WxMpConfig {
@Autowired
private WxMpService wxMpService;
@Autowired
private SimpleTextHandler simpleTextHandler; // 注入我们刚刚创建的Handler
@Bean
public WxMpMessageRouter messageRouter() {
WxMpMessageRouter newRouter = new WxMpMessageRouter(wxMpService);
// 处理文本消息
newRouter.rule()
.async(false)
.msgType("text")
.handler(simpleTextHandler)
.next();
return newRouter;
}
}
完成以上步骤后,你的 Spring Boot 应用就能处理来自微信服务器的验证请求和文本消息,并实现简单的自动回复了。
其他重要技术点
- 微信支付: WxJava 同样集成了微信支付的 SDK,可以方便地实现统一下单、查询订单、退款等功能。
- 消息推送: 可以通过公众号 API 主动给用户发送服务通知(模板消息),例如订单状态更新、物流提醒等。
- 网页授权: 当用户在公众号内点击链接时,可以通过 OAuth2.0 获取用户的
openid和基本信息,实现个性化服务。 - 部署: 将开发好的应用打包成 JAR 包,部署到云服务器(如阿里云、腾讯云)上,并确保服务器能被微信的服务器访问(80/443 端口)。
使用 Java 开发微信公众号,借助 WxJava 这样的优秀开源框架,可以让你事半功倍,它将微信复杂的 API 调用、消息加解密等底层细节封装得非常好,让你能更专注于业务逻辑的实现,对于企业级应用,Jeecg-Boot 提供了更快的开发路径,希望这份指南能帮助你顺利开启 Java 微信公众号的开发之旅。
