tinystruct-patterns
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesetinystruct Development Patterns
tinystruct 开发模式
Architecture and implementation patterns for building modules with the tinystruct Java framework – a lightweight system where CLI and HTTP are equal citizens.
使用tinystruct Java框架构建模块的架构与实现模式——这是一个将CLI和HTTP视为同等重要组件的轻量级系统。
When to Use
适用场景
- Creating new modules by extending
Application.AbstractApplication - Defining routes and command-line actions using .
@Action - Handling per-request state via .
Context - Performing JSON serialization using the native component.
Builder - Configuring database connections or system settings in .
application.properties - Generating or re-generating the standard entry point via
bin/dispatcher.ApplicationManager.init() - Debugging routing conflicts (Actions) or CLI argument parsing.
- 通过继承创建新的
AbstractApplication模块。Application - 使用定义路由和命令行操作。
@Action - 通过处理每个请求的状态。
Context - 使用原生组件执行JSON序列化。
Builder - 在中配置数据库连接或系统设置。
application.properties - 通过生成或重新生成标准的
ApplicationManager.init()入口点。bin/dispatcher - 调试路由冲突(Actions)或CLI参数解析问题。
How It Works
工作原理
The tinystruct framework treats any method annotated with as a routable endpoint for both terminal and web environments. Applications are created by extending , which provides core lifecycle hooks like and access to the request .
@ActionAbstractApplicationinit()ContextRouting is handled by the , which automatically maps path segments to method arguments and injects dependencies. For data-only services, the native component should be used for JSON serialization to maintain a zero-dependency footprint. The framework also includes a utility in to bootstrap the project's execution environment by generating the script.
ActionRegistryBuilderApplicationManagerbin/dispatchertinystruct框架会将所有带有注解的方法视为终端和Web环境均可访问的路由端点。应用通过继承创建,该类提供了等核心生命周期钩子,以及对请求的访问权限。
@ActionAbstractApplicationinit()Context路由由处理,它会自动将路径段映射到方法参数并注入依赖项。对于仅处理数据的服务,应使用原生组件进行JSON序列化,以保持零依赖的特性。框架还包含中的工具,可通过生成脚本来引导项目的执行环境。
ActionRegistryBuilderApplicationManagerbin/dispatcherExamples
示例
Basic Application (MyService)
基础应用(MyService)
java
public class MyService extends AbstractApplication {
@Override
public void init() {
this.setTemplateRequired(false); // Disable .view lookup for data/API apps
}
@Override public String version() { return "1.0.0"; }
@Action("greet")
public String greet() {
return "Hello from tinystruct!";
}
}java
public class MyService extends AbstractApplication {
@Override
public void init() {
this.setTemplateRequired(false); // 为数据/API应用禁用.view文件查找
}
@Override public String version() { return "1.0.0"; }
@Action("greet")
public String greet() {
return "Hello from tinystruct!";
}
}Parameterized Routing (getUser)
参数化路由(getUser)
java
// Handles /api/user/123 (Web) or "bin/dispatcher api/user/123" (CLI)
@Action("api/user/(\\d+)")
public String getUser(int userId) {
return "User ID: " + userId;
}java
// 处理/api/user/123(Web)或"bin/dispatcher api/user/123"(CLI)
@Action("api/user/(\\d+)")
public String getUser(int userId) {
return "User ID: " + userId;
}HTTP Mode Disambiguation (login)
HTTP模式区分(login)
java
@Action(value = "login", mode = Mode.HTTP_POST)
public boolean doLogin() {
// Process login logic
return true;
}java
@Action(value = "login", mode = Mode.HTTP_POST)
public boolean doLogin() {
// 处理登录逻辑
return true;
}Native JSON Data Handling (getData)
原生JSON数据处理(getData)
java
@Action("api/data")
public Builder getData() throws ApplicationException {
Builder builder = new Builder();
builder.put("status", "success");
Builder nested = new Builder();
nested.put("id", 1);
nested.put("name", "James");
builder.put("data", nested);
return builder;
}java
@Action("api/data")
public Builder getData() throws ApplicationException {
Builder builder = new Builder();
builder.put("status", "success");
Builder nested = new Builder();
nested.put("id", 1);
nested.put("name", "James");
builder.put("data", nested);
return builder;
}Configuration
配置
Settings are managed in .
src/main/resources/application.propertiesproperties
undefined设置在中管理。
src/main/resources/application.propertiesproperties
undefinedDatabase
Database
driver=org.h2.Driver
database.url=jdbc:h2:~/mydb
driver=org.h2.Driver
database.url=jdbc:h2:~/mydb
App specific
App specific
my.service.endpoint=https://api.example.com
undefinedmy.service.endpoint=https://api.example.com
undefinedTesting Patterns
测试模式
Use JUnit 5 to test actions by verifying they are registered in the .
ActionRegistryjava
@Test
void testActionRegistration() {
Application app = new MyService();
app.init();
ActionRegistry registry = ActionRegistry.getInstance();
assertNotNull(registry.get("greet"));
}使用JUnit 5测试操作,验证它们是否已在中注册。
ActionRegistryjava
@Test
void testActionRegistration() {
Application app = new MyService();
app.init();
ActionRegistry registry = ActionRegistry.getInstance();
assertNotNull(registry.get("greet"));
}Red Flags & Anti-patterns
警示信号与反模式
| Symptom | Correct Pattern |
|---|---|
Importing | Use |
| Call |
Annotating | Actions must be |
Hardcoding | Use |
Manual | Prefer the |
| 症状 | 正确模式 |
|---|---|
导入 | 使用 |
出现 | 在仅API应用的 |
为 | 操作必须是 |
在应用中硬编码 | 将 |
手动注册 | 优先使用 |
Technical Reference
技术参考
Detailed guides are available in the directory:
references/- Architecture & Config — Abstractions, Package Map, Properties
- Routing & @Action — Annotation details, Modes, Parameters
- Data Handling — Using the native for JSON
Builder - System & Usage — Context, Sessions, Events, CLI usage
- Testing Patterns — JUnit 5 integration and ActionRegistry testing
详细指南可在目录中找到:
references/- Architecture & Config — 抽象概念、包映射、属性配置
- Routing & @Action — 注解详情、模式、参数
- Data Handling — 使用原生处理JSON
Builder - System & Usage — 上下文、会话、事件、CLI使用
- Testing Patterns — JUnit 5集成与ActionRegistry测试
Reference Source Files (Internal)
参考源文件(内部)
- — Core base class
src/main/java/org/tinystruct/AbstractApplication.java - — Annotation & Modes
src/main/java/org/tinystruct/system/annotation/Action.java - — Routing Engine
src/main/java/org/tinystruct/application/ActionRegistry.java - — JSON/Data Serializer
src/main/java/org/tinystruct/data/component/Builder.java
- — 核心基类
src/main/java/org/tinystruct/AbstractApplication.java - — 注解与模式
src/main/java/org/tinystruct/system/annotation/Action.java - — 路由引擎
src/main/java/org/tinystruct/application/ActionRegistry.java - — JSON/数据序列化器
src/main/java/org/tinystruct/data/component/Builder.java