Unleash Java SDK 接入指南:从 Maven 依赖到特性开关评估的完整上手实践
【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash
本文是 Unleash(开源特性管理平台)官方前端引导流程中Java SDK 接入代码片段(frontend/src/component/onboarding/dialog/snippets/java.md)的完整展开。它面向首次将 Java 后端应用接入 Unleash 的开发者,覆盖 SDK 依赖安装、客户端初始化、API 地址与 Token 的正确配置、特性开关轮询评估,以及生产环境下的密钥安全实践。读完本文,你将能够直接在 Maven 工程中跑通"创建开关 → 初始化客户端 → 每秒评估开关状态"的完整链路,并理解 Unleash 前端引导流程是如何把这些代码片段自动填充成可运行示例的。
一、这段代码在 Unleash 引导流程中的位置
在 Unleash 管理界面中,新项目会通过 "Connect SDK" 对话框引导用户完成接入,该流程分为三步(见 ConnectSdkDialog.tsx):
- Select SDK:从 17 种官方 SDK 中选择语言,其中 Java 属于服务端 SDK(server SDK);
- Generate API key:为指定项目与环境生成 API Token;
- Configure the SDK:展示对应语言的接入代码,也就是本文讲解的 java.md 片段。
该片段由 ConfigureSdk.tsx 动态加载并渲染,代码块经过 highlight.js 语法高亮、支持一键复制(CodeRenderer.tsx),用户可直接把生成后的代码贴进自己的 Java 工程运行。
二、第一步:安装 Java SDK 依赖
在 Maven 工程的pom.xml中添加以下依赖:
<dependency> <groupId>io.getunleash</groupId> <artifactId>unleash-client-java</artifactId> <version>LATEST</version> </dependency>- groupId:
io.getunleash,官方 Java SDK 的统一组织标识; - artifactId:
unleash-client-java,对应 Unleash 官方维护的 Java 客户端; - version:使用
LATEST便于快速上手,但生产环境建议锁定具体版本号以保证构建可复现。
对于 Gradle 工程,可以等价地声明implementation 'io.getunleash:unleash-client-java:LATEST'——CodeRenderer.tsx 中的语言别名表(languageAliases)也印证了 Gradle 与 Java 代码共享同一套渲染机制。
三、第二步:初始化 Unleash 客户端并评估开关
安装依赖后,通过构建器模式初始化客户端:
UnleashConfig config = UnleashConfig.builder() .appName("unleash-onboarding-java") .instanceId("unleash-onboarding-instance") .unleashAPI("<YOUR_API_URL>") .apiKey("<YOUR_API_TOKEN>") // in production use environment variable .build(); Unleash unleash = new DefaultUnleash(config); while (true) { boolean featureEnabled = unleash.isEnabled("<YOUR_FLAG>"); System.out.println("Feature enabled: " + featureEnabled); Thread.sleep(1000); }代码中的四个关键占位符会在引导流程中由前端自动替换(见下文第五节):
| 配置项 | 占位符 | 含义与取值建议 |
|---|---|---|
.appName("...") | — | 应用名称,用于在 Unleash 控制台区分不同应用,建议填真实服务名 |
.instanceId("...") | — | 实例标识,用于区分同一应用的多个部署实例 |
.unleashAPI("<YOUR_API_URL>") | YOUR_API_URL | Unleash 服务端 API 地址,由前端根据实例配置自动拼接 |
.apiKey("<YOUR_API_TOKEN>") | YOUR_API_TOKEN | 引导流程第二步生成的客户端 API Token,生产环境应改为环境变量注入 |
<YOUR_FLAG> | YOUR_FLAG | 你要评估的特性开关名称,引导时若选中了具体开关会自动填入 |
其中new DefaultUnleash(config)会启动后台同步线程,周期性从 Unleash 拉取开关与策略数据,因此示例中的while (true)循环每秒调用一次unleash.isEnabled(),能实时反映开关状态的变化。
四、API 地址与 Token 从哪来
<YOUR_API_URL>与<YOUR_API_TOKEN>并非手写硬编码,而是引导流程根据你的实例自动生成:
- API URL:由 buildSdkApiUrl.ts 计算。该文件明确区分两类 SDK——服务端 SDK(Node.js、Go、Python、Java等)连接常规客户端 API
{unleashUrl}/api/,而前端 SDK(React、Vue、JavaScript 等)连接{unleashUrl}/api/frontend/。Java 属于服务端 SDK,因此 URL 形如https://your-unleash-host/api/; - API Token:在 "Generate API key" 步骤中为所选项目与环境创建,前端会把它实时替换进代码片段(GenerateApiKey 所在目录)。
这也是 java.md 片段只保留占位符、由界面动态注入真实值的原因——同一份文档模板可以复用于任意实例、项目与环境。
五、生产环境密钥安全:优先使用环境变量
java.md 明确标注了生产环境的推荐做法:不要把 Token 明文写死在代码里,而是通过环境变量注入。片段中给出的替代初始化方式如下:
UnleashConfig config = UnleashConfig.builder() .appName("unleash-onboarding-java") .instanceId("unleash-onboarding-instance") .unleashAPI("<YOUR_API_URL>") .apiKey(System.getenv("UNLEASH_API_KEY")) .build();要点:
- 使用
System.getenv("UNLEASH_API_KEY")读取运行环境变量,避免 Token 进入版本库; - 启动应用前通过部署平台(如 K8s Secret、CI 变量)注入
UNLEASH_API_KEY; - 正式环境同样建议将实例 API 地址(
UNLEASH_API_URL)抽为环境变量,便于多环境(dev / staging / prod)切换。
六、根据开关状态执行不同逻辑
接入的最终目的是在业务代码中按开关分支。java.md 给出了最基础的判断形态:
if (unleash.isEnabled("<YOUR_FLAG>")) { System.out.println("<YOUR_FLAG> is enabled"); } else { System.out.println("<YOUR_FLAG> is disabled"); }isEnabled()返回布尔值,可直接嵌入业务分支:开关开启走新功能路径,关闭则回退到旧逻辑,从而实现特性开关的核心价值——无需发版即可灰度、回滚或逐步放量。
七、占位符替换机制:模板如何变成可用代码
从源码结构看,这段文档之所以能"开箱即用",是因为 ConfigureSdk.tsx 在渲染前对片段做了字符串替换:
const snippet = (codeRenderSnippets[sdk.name] || '') .replace('<YOUR_API_TOKEN>', apiKey) .replace('<YOUR_API_URL>', apiUrl) .replaceAll('<YOUR_FLAG>', flagName || '<YOUR_FLAG>');<YOUR_API_TOKEN>被替换为第二步生成的真实 Token;<YOUR_API_URL>被替换为按 SDK 类型计算出的 API 地址;<YOUR_FLAG>若用户在引导中选定了具体开关,则替换为开关名,否则保留占位符;- 片段以
---分隔,渲染时只取第一部分(安装 + 主运行示例),其余部分(环境变量示例、判断示例)不展示在引导对话框内。
因此你在界面上复制到的 Java 代码,是已经填充好真实配置、可直接编译运行的版本。
八、连接验证与排查
Java SDK 接入完成后,引导界面通过 SdkEvaluationStatus 监听项目 onboarding 状态:当后端收到 SDK 上报的评估指标后,状态变为sdk-connected,界面显示 "We received metrics from your application",引导即完成(ConfigureSdk.tsx 中project.onboardingStatus.status === 'sdk-connected')。
如果约 30 秒后仍未看到连接成功提示,界面会给出排查建议:确认应用已启动、客户端已使用第二步生成的 API Key 完成初始化。此时可重点检查:
.unleashAPI()是否指向正确环境(Java 服务端 SDK 应使用/api/而非/api/frontend/);.apiKey()是否为有权限访问目标项目的 Token;- 应用是否实际调用了
unleash.isEnabled()(评估动作才会产生上报指标)。
九、小结
本文围绕 java.md 这一引导片段,完整梳理了 Unleash Java SDK 的接入路径:Maven 依赖安装 →UnleashConfig构建器初始化 →DefaultUnleash启动后台同步 →isEnabled()评估开关,并延伸到 API 地址计算、Token 环境变量化、占位符自动填充机制与连接状态验证。对于其他服务端语言(Node.js、Go、Python 等),snippets 目录 下的同名文档遵循完全相同的三步引导模式,理解了 Java 的接入原理即可触类旁通。
【免费下载链接】unleashOpen-source feature management platform项目地址: https://gitcode.com/GitHub_Trending/un/unleash
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考