# tyylab-kestrel-framework
**Repository Path**: tyylab/tyylab-kestrel-framework
## Basic Information
- **Project Name**: tyylab-kestrel-framework
- **Description**: Kestrel 是一个基于 Java 的框架,旨在简化 Spring 应用程序中 Feign 客户端和 Web 控制器的生成。它通过动态生成代码来减少样板代码的数量,并提供了一种声明式的方式来定义 API 接口及其对应的实现。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-06-23
- **Last Updated**: 2026-04-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Kestrel Framework
Kestrel 是一个基于 Java 的框架,旨在简化 Spring 应用程序中 Feign 客户端和 Web 控制器的生成。它通过动态生成代码来减少样板代码的数量,并提供了一种声明式的方式来定义 API 接口及其对应的实现。
## 特性
- **Feign 客户端生成**:自动为服务消费者生成 Feign 客户端。
- **Web 控制器生成**:根据 API 接口自动生成 Spring Web 控制器。
- **注解支持**:提供自定义注解以启用和配置 Feign 客户端及 Web 服务器。
- **灵活配置**:允许通过配置类或属性文件进行定制化设置。
## 模块结构
- `tyylab-kestrel-framework-core`: 核心功能模块,包含代码生成工具和通用工具类。
- `tyylab-kestrel-framework-spring-web`: 提供与 Spring Web 集成的功能,包括控制器生成。
- `tyylab-kestrel-framework-spring-rpc-feign`: 提供与 Feign RPC 集成的功能,用于服务间通信。
- `example`: 包含使用示例,展示如何在实际项目中使用 Kestrel。
## 快速开始
### 添加依赖
确保在您的项目的 `pom.xml` 中添加了必要的依赖项。对于使用 Feign 的项目,您需要添加:
```xml
com.tyylab.kestrel
tyylab-kestrel-framework-spring-rpc-feign
版本号
```
对于使用 Web 控制器生成的项目,添加:
```xml
com.tyylab.kestrel
tyylab-kestrel-framework-spring-web
版本号
```
### 启用 Kestrel 功能
在您的 Spring Boot 应用程序主类上使用相应的注解来启用 Kestrel 功能。
#### 对于服务消费者(Feign 客户端)
```java
@SpringBootApplication
@EnableKestrelFeignClient(serviceName = "your-service-name", apiBasePackages = {"your.api.package"})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
```
#### 对于服务提供者(Web 控制器)
```java
@SpringBootApplication
@EnableKestrelServer(apiBasePackages = "your.api.package")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
```
### 创建 API 接口
定义一个接口并使用标准的 Spring MVC 注解来描述您的 API。
```java
public interface IHellowWorldApi {
String sayHi(String name, int age);
Object sayHi2(String name, int age);
}
```
### 实现 API 接口
创建接口的实现类,并将其注册为 Spring Bean。
```java
@Service
public class HellowWorldApiImpl implements IHellowWorldApi {
@Override
public String sayHi(String name, int age) {
return "Hello, " + name + "! You are " + age + " years old.";
}
@Override
public Object sayHi2(String name, int age) {
// 实现细节
}
}
```
### 运行应用程序
启动您的 Spring Boot 应用程序,Kestrel 将会自动为您生成所需的客户端或控制器代码。
## 贡献指南
我们欢迎贡献!如果您有兴趣改进 Kestrel 或添加新特性,请遵循以下步骤:
1. Fork 仓库。
2. 创建新的分支。
3. 提交您的更改。
4. 发起 Pull Request。
请确保遵循项目的编码规范,并在提交前运行所有测试。
## 许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。