# strategy-spring-boot-starter **Repository Path**: xcOschina/strategy-spring-boot-starter ## Basic Information - **Project Name**: strategy-spring-boot-starter - **Description**: Strategy Spring Boot Starter 是一个用于快速实现策略模式和灰度发布的 Spring Boot Starter 组件。它提供了一种简单而灵活的方式来管理和执行不同的业务策略,并支持基于规则的灰度发布功能。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Strategy Spring Boot Starter with Gray Support [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2.0-green.svg)](https://spring.io/projects/spring-boot) [![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0) ## 项目简介 Strategy Spring Boot Starter 是一个用于快速实现策略模式和灰度发布的 Spring Boot Starter 组件。它提供了一种简单而灵活的方式来管理和执行不同的业务策略,并支持基于规则的灰度发布功能。 该组件主要特性包括: - 简单易用的策略模式实现 - 支持基于租户、用户标签和流量比例的灰度发布 - 自动配置,开箱即用 - 与 Spring Boot 生态无缝集成 - 支持 Nacos 配置中心(可选) ## 项目结构 ``` strategy-project-temp ├── strategy-spring-boot-starter # 策略 Starter 核心模块 ├── gray-strategy-demo-app # 示例应用 └── doc # 文档 ``` ### 核心模块 - `strategy-spring-boot-starter`: 提供策略模式和灰度发布的核心功能 - `gray-strategy-demo-app`: 演示如何使用策略 Starter 的示例应用 ## 快速开始 ### 1. 添加依赖 在您的 Maven 项目中添加以下依赖: ```xml com.example strategy-spring-boot-starter 1.0.0 ``` ### 2. 创建策略实现 创建您的业务策略实现类: ```java @Component public class YourBusinessStrategy implements Strategy { @Override public boolean supports(YourContext context) { // 判断是否支持该上下文 return true; } @Override public void execute(YourContext context) { // 执行具体业务逻辑 } } ``` ### 3. 使用策略选择器 在您的服务中注入并使用 StrategySelector: ```java @Service @RequiredArgsConstructor public class YourService { private final StrategySelector strategySelector; public void process(YourContext context) { strategySelector.execute(context); } } ``` ## 核心组件 ### Strategy 接口 策略接口,所有业务策略都需要实现该接口: ```java public interface Strategy { boolean supports(C context); void execute(C context); } ``` ### StrategySelector 策略选择器,负责根据上下文选择并执行合适的策略: - 自动收集所有 Strategy 实现 - 根据上下文选择合适的策略 - 支持灰度发布规则 ### 灰度发布支持 支持三种灰度规则: 1. **租户白名单**:只对特定租户启用策略 2. **用户标签**:只对具有特定标签的用户启用策略 3. **流量比例**:按百分比分配流量到新策略 ## 配置选项 在 `application.yml` 中添加以下配置: ```yaml strategy: log-enabled: true # 是否启用策略执行日志 fallback-enabled: false # 是否启用降级策略 # 灰度配置 gray: rules: yourstrategy: enabled: true ratio: 0.5 allowed-tenants: - tenantA - tenantB required-user-tags: - VIP - PREMIUM ``` ## Nacos 集成 要启用 Nacos 配置中心支持,请添加以下依赖: ```xml com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config 2022.0.0.0 ``` 并在 `bootstrap.yml` 中配置 Nacos: ```yaml spring: application: name: your-app-name cloud: nacos: config: server-addr: localhost:8848 ``` ## 示例应用 示例应用演示了如何使用策略 Starter 实现支付策略: - `V1PaymentStrategy`: 基础支付策略 - `V2PaymentStrategy`: 灰度版本支付策略 可以通过访问以下接口测试: ``` GET /api/pay?userId=user1&amount=100 ``` ## 构建和运行 ### 构建项目 ```bash # 构建 starter 模块 cd strategy-spring-boot-starter mvn clean install # 构建示例应用 cd ../gray-strategy-demo-app mvn clean package ``` ### 运行示例 ```bash java -jar gray-strategy-demo-app/target/gray-strategy-demo-app-1.0.0.jar ``` 访问 `http://localhost:8080/swagger-ui.html` 查看 API 文档。 ## 许可证 本项目采用 Apache License 2.0 许可证,详情请见 [LICENSE](LICENSE) 文件。