ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

WxJava 微信公众号开发 Solon 插件 wx-java-mp-solon-plugin 快速接入指南

2026/9/19 20:14:08 拓冰建站 浏览量
WxJava 微信公众号开发 Solon 插件 wx-java-mp-solon-plugin 快速接入指南 WxJava 微信公众号开发 Solon 插件 wx-java-mp-solon-plugin 快速接入指南【免费下载链接】WxJava微信开发 Java SDK 支持包括微信支付开放平台小程序企业微信视频号公众号等的后端开发项目地址: https://gitcode.com/gh_mirrors/wx/WxJavawx-java-mp-solon-plugin是 WxJava 生态为国产轻量级框架 Solon 提供的微信公众号公众号 / 服务号 / 订阅号开发插件位于仓库 solon-plugins/wx-java-mp-solon-plugin。它把weixin-java-mp的WxMpService与WxMpConfigStorage以自动装配的方式注入 Solon 容器开发者只需在app.properties中填写公众号参数即可完成接入。读完本文你将掌握该插件的依赖引入、全量配置项解析、内存 / RedisJedis、Redisson多存储策略切换以及 HTTP 客户端与代理的自定义方案。插件定位与自动装配原理该插件本质上是一个 Solon 插件Plugin实现见 WxMpPluginImpl.java在 Solon 应用启动时完成两件事读取wx.mp前缀下的配置绑定为 WxMpProperties 属性对象依据配置条件化地创建WxMpConfigStorage配置存储与WxMpService业务服务两个 Bean。核心装配逻辑位于 WxMpServiceAutoConfiguration.javaL24-L49它根据wx.mp.config-storage.http-client-type的值通过 switch 分支分别创建WxMpServiceImpl、WxMpServiceHttpClientImpl、WxMpServiceJoddHttpImpl、WxMpServiceOkHttpImpl、WxMpServiceHttpComponentsImpl随后调用setWxMpConfigStorage(configStorage)将配置存储注入服务对象。从源码结构看插件的pom.xml对jedis、redisson、jodd-http、okhttp均声明为provided作用域见 pom.xml即插件不强制传递这些可选依赖由使用方按需引入这也是存储与 HTTP 客户端策略可插拔的前提。快速开始1. 引入依赖在 Maven 项目中添加如下依赖${version}替换为实际版本当前插件父工程版本为4.8.6.B见 pom.xmldependency groupIdcom.github.binarywang/groupId artifactIdwx-java-mp-solon-plugin/artifactId version${version}/version /dependency2. 添加配置app.properties# 公众号配置(必填) wx.mp.app-idappId wx.mp.secretsecret wx.mp.tokentoken wx.mp.aes-keyaesKey wx.mp.use-stable-access-tokenuseStableAccessToken # 存储配置redis(可选) wx.mp.config-storage.typeredis # 配置类型: Memory(默认), Jedis, Redisson, RedisTemplate wx.mp.config-storage.key-prefixwx # 相关redis前缀配置: wx(默认) wx.mp.config-storage.redis.host127.0.0.1 wx.mp.config-storage.redis.port6379 # 单机和sentinel同时存在时优先使用sentinel配置 #wx.mp.config-storage.redis.sentinel-ips127.0.0.1:16379,127.0.0.1:26379 #wx.mp.config-storage.redis.sentinel-namemymaster # http客户端配置 wx.mp.config-storage.http-client-typehttpclient # http客户端类型: HttpClient, OkHttp, JoddHttp, HttpComponents wx.mp.config-storage.http-proxy-host wx.mp.config-storage.http-proxy-port wx.mp.config-storage.http-proxy-username wx.mp.config-storage.http-proxy-password # 公众号地址host配置 #wx.mp.hosts.api-hosthttp://proxy.com/ #wx.mp.hosts.open-hosthttp://proxy.com/ #wx.mp.hosts.mp-hosthttp://proxy.com/3. 自动注入的类型配置完成后插件会自动向 Solon 容器注册以下两个 Bean可在任意 Solon Bean 中直接注入使用WxMpService—— 微信公众号核心服务接口封装了消息、菜单、素材、用户、模板消息、客服等全部公众号 APIWxMpConfigStorage—— 公众号配置存储含 access_token 的获取与缓存逻辑。Inject private WxMpService wxMpService; // 直接使用即可无需手动 new配置参数全解以下参数全部继承自 WxMpProperties.java其属性前缀PREFIX wx.mpL23通过 Solon 的Inject(${wx.mp})完成整体绑定。公众号基础配置必填配置项含义默认值说明wx.mp.app-id公众号 AppID无必填绑定为WxMpProperties.appIdwx.mp.secret公众号 AppSecret无必填wx.mp.token服务器配置 Token无用于接收消息时校验签名wx.mp.aes-keyEncodingAESKey无安全模式下消息加解密wx.mp.use-stable-access-token是否使用稳定版 AccessTokenfalse对应useStableAccessToken字段WxMpProperties.java L48上述字段最终由 AbstractWxMpConfigStorageConfiguration.javaL11-L25统一写入WxMpDefaultConfigImpl并同步设置 HTTP 代理信息是所有存储策略共用的公共装配入口。存储配置wx.mp.config-storage.*配置项含义默认值wx.mp.config-storage.type存储类型Memorywx.mp.config-storage.key-prefixRedis Key 前缀wxwx.mp.config-storage.redis.hostRedis 主机127.0.0.1wx.mp.config-storage.redis.portRedis 端口6379wx.mp.config-storage.redis.passwordRedis 密码无wx.mp.config-storage.redis.timeout连接超时毫秒2000wx.mp.config-storage.redis.databaseRedis 库号0wx.mp.config-storage.redis.sentinel-ipsSentinel 节点列表无wx.mp.config-storage.redis.sentinel-nameSentinel 主节点名无wx.mp.config-storage.redis.max-active连接池最大连接数无wx.mp.config-storage.redis.max-idle连接池最大空闲数无wx.mp.config-storage.redis.max-wait-millis获取连接最大等待毫秒无wx.mp.config-storage.redis.min-idle连接池最小空闲数无type的可选值来自 StorageType.java 枚举Memory、Jedis、Redisson、RedisTemplate。注意 README 中仅列举了前三种常见写法从源码枚举看实际还支持RedisTemplate需由应用自行提供对应实现类所需依赖与 Bean。RedisProperties的默认值定义见 RedisProperties.javaL20-L40。HTTP 客户端与代理配置配置项含义默认值wx.mp.config-storage.http-client-typeHTTP 客户端类型HttpComponents源码默认值见 WxMpProperties.java L82wx.mp.config-storage.http-proxy-hostHTTP 代理主机空wx.mp.config-storage.http-proxy-portHTTP 代理端口空wx.mp.config-storage.http-proxy-username代理用户名空wx.mp.config-storage.http-proxy-password代理密码空http-client-type的可选值来自 HttpClientType.java 枚举HttpClient、OkHttp、JoddHttp、HttpComponents分别对应 Apache HttpClient、OkHttp、Jodd HTTP 与 HttpComponents 实现。需要特别说明README 中该行注释标注“HttpClient(默认)”但从当前源码看ConfigStorage.httpClientType的默认值为HttpComponents两者存在出入实际生效默认值以源码为准。选用 OkHttp / JoddHttp 时需自行在工程中引入对应依赖插件pom.xml中为provided作用域。自定义公众号地址 Hostwx.mp.hosts.api-hosthttp://proxy.com/ wx.mp.hosts.open-hosthttp://proxy.com/ wx.mp.hosts.mp-hosthttp://proxy.com/对应 HostConfig.java 中的三个字段apiHost对应https://api.weixin.qq.comopenHost对应https://open.weixin.qq.commpHost对应https://mp.weixin.qq.com。适用于通过反代网关或私有化环境转发微信请求的场景。存储策略深入三种开箱即用的配置实现Memory 内存存储wx.mp.config-storage.typememory时大小写不敏感条件匹配见 WxMpInMemoryConfigStorageConfiguration.java 的Condition注解插件创建 WxMpDefaultConfigImpl 实例。这是默认策略access_token 缓存在进程内存中适合单实例部署或开发调试多实例部署时各实例会各自获取 token可能触发微信侧频率限制。Jedis 存储Rediswx.mp.config-storage.typejedis时由 WxMpInJedisConfigStorageConfiguration.java 创建WxMpRedisConfigImpl其核心逻辑L39-L49若配置了wx.mp.config-storage.redis.host插件自动创建名为wxMpJedisPool的JedisPool基于wx.mp.config-storage.redis.*下的连接池参数testOnBorrow、testWhileIdle恒为true若未配置 host则从 Solon 容器中获取用户自行提供的JedisPoolBean —— 这正是接入 Sentinel 等复杂拓扑的扩展点用户可自行构建支持 Sentinel 的JedisPool并注册为 Bean插件会优先复用最终以JedisWxRedisOps(jedisPool)包装并携带wx.mp.config-storage.key-prefix默认wx作为 Redis Key 前缀。Redisson 存储Rediswx.mp.config-storage.typeredisson时由 WxMpInRedissonConfigStorageConfiguration.java 创建WxMpRedissonConfigImpl逻辑与 Jedis 分支对称L38-L47配置了 host 时插件自建RedissonClient单机模式redis://host:port可配密码传输模式为 NIO未配置时从容器获取用户自定义的RedissonClientBean。多实例部署建议生产环境建议将type切换为jedis或redisson使 access_token 在多个应用实例间共享避免 token 重复获取与刷新造成的互相挤兑。两种 Redis 实现均自动兼容WxMpRedisConfigImpl/WxMpRedissonConfigImpl的序列化与过期管理无需额外编码。进阶代理与私有化网关需要经过代理访问微信接口时配置wx.mp.config-storage.http-proxy-*四项即可装配层AbstractWxMpConfigStorageConfiguration会在构建 config 时统一设置私有化部署或网关转发场景通过wx.mp.hosts.*覆盖微信官方域名实现请求地址的全局替换。测试与验证仓库内提供了 Solon 集成冒烟测试 LoadTest.java验证插件在 Solon 应用上下文中的装配可用性。开发时可参考该测试组织自己的集成验证用例。官方同时维护了配套的完整示例工程wx-java-mp-demo可结合仓库内 README.md 与 WxJava 主仓库文档查阅更完整的业务 API 用法。小结wx-java-mp-solon-plugin将 Solon 的自动装配能力与 WxJava 的公众号 SDK 无缝衔接一条依赖、一份app.properties、一次自动注入即可获得完整的公众号开发能力。关键要点回顾基础配置项wx.mp.app-id / secret / token / aes-key必填use-stable-access-token按需开启稳定版 token存储策略按需切换Memory → Jedis / Redisson生产多实例务必使用 RedisHTTP 客户端与代理均可通过配置切换默认实现为 HttpComponents自定义 host 与自建连接池 Bean 是私有化与 Sentinel 场景的扩展入口。本文所有配置默认值与行为说明均以当前仓库源码 WxMpProperties.java 及各存储装配类为准若与 README 注释存在出入以源码实现为准。【免费下载链接】WxJava微信开发 Java SDK 支持包括微信支付开放平台小程序企业微信视频号公众号等的后端开发项目地址: https://gitcode.com/gh_mirrors/wx/WxJava创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考