Agent SkillsJeffallan/claude-skills › spring-boot-engineer

spring-boot-engineer

GitHub

Spring Boot 3.x 全栈开发助手,涵盖配置生成、REST 控制器、安全认证、数据访问及响应式编程。支持微服务架构设计与实现,提供从需求分析到部署测试的完整工作流。

skills/spring-boot-engineer/SKILL.md Jeffallan/claude-skills

Trigger Scenarios

构建 Spring Boot 应用 设计 REST API 配置 Spring Security 实现 Spring Data JPA 搭建微服务架构

Install

npx skills add Jeffallan/claude-skills --skill spring-boot-engineer -g -y
More Options

Use without installing

npx skills use Jeffallan/claude-skills@spring-boot-engineer

指定 Agent (Claude Code)

npx skills add Jeffallan/claude-skills --skill spring-boot-engineer -a claude-code -g -y

安装 repo 全部 skill

npx skills add Jeffallan/claude-skills --all -g -y

预览 repo 内 skill

npx skills add Jeffallan/claude-skills --list

SKILL.md

Frontmatter
{
    "name": "spring-boot-engineer",
    "license": "MIT",
    "metadata": {
        "role": "specialist",
        "scope": "implementation",
        "author": "https:\/\/github.com\/Jeffallan",
        "domain": "backend",
        "version": "1.1.0",
        "triggers": "Spring Boot, Spring Framework, Spring Cloud, Spring Security, Spring Data JPA, Spring WebFlux, Microservices Java, Java REST API, Reactive Java",
        "output-format": "code",
        "related-skills": "java-architect, database-optimizer, microservices-architect, devops-engineer"
    },
    "description": "Generates Spring Boot 3.x configurations, creates REST controllers, implements Spring Security 6 authentication flows, sets up Spring Data JPA repositories, and configures reactive WebFlux endpoints. Use when building Spring Boot 3.x applications, microservices, or reactive Java applications; invoke for Spring Data JPA, Spring Security 6, WebFlux, Spring Cloud integration, Java REST API design, or Microservices Java architecture."
}

Spring Boot Engineer

Core Workflow

  1. Analyze requirements — Identify service boundaries, APIs, data models, security needs
  2. Design architecture — Plan microservices, data access, cloud integration, security; confirm design before coding
  3. Implement — Create services with constructor injection and layered architecture (see Quick Start below)
  4. Secure — Add Spring Security, OAuth2, method security, CORS configuration; verify security rules compile and pass tests. If compilation or tests fail: review error output, fix the failing rule or configuration, and re-run before proceeding
  5. Test — Write unit, integration, and slice tests; run ./mvnw test (or ./gradlew test) and confirm all pass before proceeding. If tests fail: review the stack trace, isolate the failing assertion or component, fix the issue, and re-run the full suite
  6. Deploy — Configure health checks and observability via Actuator; validate /actuator/health returns UP. If health is DOWN: check the components detail in the response, resolve the failing component (e.g., datasource, broker), and re-validate

Reference Guide

Load detailed guidance based on context:

Topic Reference Load When
Web Layer references/web.md Controllers, REST APIs, validation, exception handling
Data Access references/data.md Spring Data JPA, repositories, transactions, projections
Security references/security.md Spring Security 6, OAuth2, JWT, method security
Cloud Native references/cloud.md Spring Cloud, Config, Discovery, Gateway, resilience
Testing references/testing.md @SpringBootTest, MockMvc, Testcontainers, test slices

Quick Start — Minimal Working Structure

A standard Spring Boot feature consists of these layers. Use these as copy-paste starting points.

Entity

@Entity
@Table(name = "products")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank
    private String name;

    @DecimalMin("0.0")
    private BigDecimal price;

    // getters / setters or use @Data (Lombok)
}

Repository

public interface ProductRepository extends JpaRepository<Product, Long> {
    List<Product> findByNameContainingIgnoreCase(String name);
}

Service (constructor injection)

@Service
public class ProductService {
    private final ProductRepository repo;

    public ProductService(ProductRepository repo) { // constructor injection — no @Autowired
        this.repo = repo;
    }

    @Transactional(readOnly = true)
    public List<Product> search(String name) {
        return repo.findByNameContainingIgnoreCase(name);
    }

    @Transactional
    public Product create(ProductRequest request) {
        var product = new Product();
        product.setName(request.name());
        product.setPrice(request.price());
        return repo.save(product);
    }
}

REST Controller

@RestController
@RequestMapping("/api/v1/products")
@Validated
public class ProductController {
    private final ProductService service;

    public ProductController(ProductService service) {
        this.service = service;
    }

    @GetMapping
    public List<Product> search(@RequestParam(defaultValue = "") String name) {
        return service.search(name);
    }

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public Product create(@Valid @RequestBody ProductRequest request) {
        return service.create(request);
    }
}

DTO (record)

public record ProductRequest(
    @NotBlank String name,
    @DecimalMin("0.0") BigDecimal price
) {}

Global Exception Handler

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Map<String, String> handleValidation(MethodArgumentNotValidException ex) {
        return ex.getBindingResult().getFieldErrors().stream()
            .collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage));
    }

    @ExceptionHandler(EntityNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public Map<String, String> handleNotFound(EntityNotFoundException ex) {
        return Map.of("error", ex.getMessage());
    }
}

Test Slice

@WebMvcTest(ProductController.class)
class ProductControllerTest {
    @Autowired MockMvc mockMvc;
    @MockBean ProductService service;

    @Test
    void createProduct_validRequest_returns201() throws Exception {
        var product = new Product(); product.setName("Widget"); product.setPrice(BigDecimal.TEN);
        when(service.create(any())).thenReturn(product);

        mockMvc.perform(post("/api/v1/products")
                .contentType(MediaType.APPLICATION_JSON)
                .content("""{"name":"Widget","price":10.0}"""))
            .andExpect(status().isCreated())
            .andExpect(jsonPath("$.name").value("Widget"));
    }
}

Constraints

MUST DO

Rule Correct Pattern
Constructor injection public MyService(Dep dep) { this.dep = dep; }
Validate API input @Valid @RequestBody MyRequest req on every mutating endpoint
Type-safe config @ConfigurationProperties(prefix = "app") bound to a record/class
Appropriate stereotype @Service for business logic, @Repository for data, @RestController for HTTP
Transaction scope @Transactional on multi-step writes; @Transactional(readOnly = true) on reads
Hide internals Catch domain exceptions in @RestControllerAdvice; return problem details, not stack traces
Externalize secrets Use environment variables or Spring Cloud Config — never application.properties

MUST NOT DO

  • Use field injection (@Autowired on fields)
  • Skip input validation on API endpoints
  • Use @Component when @Service/@Repository/@Controller applies
  • Mix blocking and reactive code (e.g., calling .block() inside a WebFlux chain)
  • Store secrets or credentials in application.properties/application.yml
  • Hardcode URLs, credentials, or environment-specific values
  • Use deprecated Spring Boot 2.x patterns (e.g., WebSecurityConfigurerAdapter)

Documentation

Version History

  • 882ef55 Current 2026-08-20 09:05

Same Skill Collection

skills/angular-architect/SKILL.md
skills/api-designer/SKILL.md
skills/atlassian-mcp/SKILL.md
skills/chaos-engineer/SKILL.md
skills/cli-developer/SKILL.md
skills/cloud-architect/SKILL.md
skills/code-documenter/SKILL.md
skills/cpp-pro/SKILL.md
skills/csharp-developer/SKILL.md
skills/database-optimizer/SKILL.md
skills/debugging-wizard/SKILL.md
skills/django-expert/SKILL.md
skills/dotnet-core-expert/SKILL.md
skills/embedded-systems/SKILL.md
skills/fastapi-expert/SKILL.md
skills/feature-forge/SKILL.md
skills/flutter-expert/SKILL.md
skills/golang-pro/SKILL.md
skills/graphql-architect/SKILL.md
skills/java-architect/SKILL.md
skills/javascript-pro/SKILL.md
skills/kotlin-specialist/SKILL.md
skills/kubernetes-specialist/SKILL.md
skills/laravel-specialist/SKILL.md
skills/legacy-modernizer/SKILL.md
skills/mcp-developer/SKILL.md
skills/microservices-architect/SKILL.md
skills/nextjs-developer/SKILL.md
skills/pandas-pro/SKILL.md
skills/php-pro/SKILL.md
skills/playwright-expert/SKILL.md
skills/postgres-pro/SKILL.md
skills/python-pro/SKILL.md
skills/rag-architect/SKILL.md
skills/react-expert/SKILL.md
skills/react-native-expert/SKILL.md
skills/salesforce-developer/SKILL.md
skills/security-reviewer/SKILL.md
skills/spark-engineer/SKILL.md
skills/sre-engineer/SKILL.md
skills/swift-expert/SKILL.md
skills/terraform-engineer/SKILL.md
skills/the-fool/SKILL.md
skills/typescript-pro/SKILL.md
skills/vue-expert/SKILL.md
skills/websocket-engineer/SKILL.md
skills/architecture-designer/SKILL.md
skills/code-reviewer/SKILL.md
skills/devops-engineer/SKILL.md

Metadata

Files
0
Version
882ef55
Hash
6dcc68c5
Indexed
2026-08-20 09:05

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-21 11:12
浙ICP备14020137号-1 $방문자$