java
Use this skill for Java 后端服务(通常 Spring Boot)开发与评审。
Defaults (unless repo dictates otherwise)
- Framework: Spring Boot
- Build: Maven or Gradle (follow repo)
- API: REST + JSON, explicit DTOs
- DB: PostgreSQL, migrations via Flyway/Liquibase if present
Recommended structure
controller/:HTTP layer(request/response DTO、参数校验、错误码映射)service/:业务编排与事务边界(domain logic orchestration)repository/:持久化(JPA repository / MyBatis mapper)domain/:领域模型(实体、值对象、聚合根)config/:配置(Web/Security/Serialization)integration/:第三方调用(HTTP clients, MQ)common/:通用工具(logging, id, time, error)test/:单测/集成测试
Workflow
- Clarify contract
- Endpoint list, auth requirements, error codes, id format.
- Consistency with existing API versioning (
/v1/...) and response envelope.
- API design & validation
- Use DTOs; do not expose entities directly.
- Bean Validation (
@Valid,@NotNull, etc.) for input. - Standardize error responses (code/message/details).
- Persistence & migrations
- Define schema and migration scripts (Flyway/Liquibase).
- Add indexes for query paths; ensure constraints align with requirements.
- Avoid N+1 queries (fetch joins, batch sizes, projections).
- Transactions & consistency
- Define transaction boundaries at service layer (
@Transactional). - Keep read-only transactions where possible.
- Idempotency for write endpoints when needed.
- Security
- Spring Security: authentication (JWT/session), authorization (roles/scopes).
- Secrets via env/config server; never commit credentials.
- Safe logging (no PII), rate limiting if required.
- Observability
- Structured logs with correlation/request IDs.
- Metrics (latency, error rate, DB timings); tracing if available.
- Testing
- Unit tests for services and domain logic.
- Integration tests for repositories and controllers (Testcontainers if used).
- Keep tests deterministic and fast.
Output expectations when making changes
- Keep diffs localized; avoid broad refactors unless requested.
- Update DTOs/migrations/tests together.
- Document new config/env vars and run steps.