# 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
[](https://spring.io/projects/spring-boot)
[](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) 文件。