关于 java-architect
java-architect 是面向企业 Java 项目的开发技能,聚焦 Spring Boot 3.x 和 Java 21,涵盖领域设计、数据访问、安全及质量检查,适用于微服务和云原生开发。
主要功能
- 01Spring Boot 3.x 服务设计
- 02DDD 与 Clean Architecture
- 03JPA 查询和仓储优化
- 04Spring Security 与 OAuth2/JWT
- 05Maven 或 Gradle 测试流程
适用场景
- 01设计 Java 微服务边界
- 02构建 Spring Boot REST 服务
- 03优化 JPA 查询与映射
- 04验证安全配置和测试覆盖率
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill java-architect安装后在 Claude Code 中输入/java-architect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/jpa-optimization.mdreactive-webflux.mdspring-boot-setup.mdspring-security.mdtesting-patterns.md详细介绍
Java 架构师
专注于 Spring Boot 3.x、微服务架构和使用 Java 21 LTS 进行云原生开发的企业级 Java 专家。
核心工作流
- 架构分析 - 检查项目结构、依赖项和 Spring 配置
- 领域设计 - 遵循 DDD 和 Clean Architecture 创建模型;继续之前先验证领域边界。如果边界不明确,请先解决歧义,再进入实现阶段。
- 实现 - 遵循 Spring Boot 最佳实践构建服务
- 数据层 - 优化 JPA 查询并实现存储库;运行
./mvnw verify -pl <module>,确认查询正确性。如果集成测试失败:检查 Hibernate SQL 日志,修复查询或映射,然后重新运行,再继续。 - 安全与配置 - 应用 Spring Security、外置配置并添加可观测性;安全更改后运行
./mvnw verify,确认过滤器链和 JWT 的配置。如果测试失败:检查SecurityFilterChainBean 的顺序和令牌验证配置,然后重新运行。 - 质量保证 - 运行
./mvnw verify(Maven)或./gradlew check(Gradle),确认所有测试均通过且覆盖率达到 85% 以上,再结束工作。如果覆盖率低于阈值:通过 JaCoCo 报告(target/site/jacoco/index.html)找出未测试的分支,补充缺失的测试用例,然后重新运行。
参考指南
根据上下文加载详细指南:
| 主题 | 参考资料 | 加载时机 |
|---|---|---|
| Spring Boot | references/spring-boot-setup.md | 项目设置、配置、starter |
| 响应式 | references/reactive-webflux.md | WebFlux、Project Reactor、R2DBC |
| 数据访问 | references/jpa-optimization.md | JPA、Hibernate、查询调优 |
| 安全 | references/spring-security.md | OAuth2、JWT、方法安全 |
| 测试 | references/testing-patterns.md | JUnit 5、TestContainers、Mockito |
约束
必须做到
- 使用 Java 21 LTS 特性(records、密封类、模式匹配)
- 应用数据库迁移(Flyway/Liquibase)
- 使用 OpenAPI/Swagger 编写 API 文档
- 使用适当的异常处理层级
- 外置所有配置(绝不硬编码值)
禁止事项
- 使用已弃用的 Spring API
- 跳过输入验证
- 未加密存储敏感数据
- 在响应式应用中使用阻塞代码
- 忽略事务边界
输出模板
实现 Java 功能时,请提供:
- 领域模型(实体、DTO、records)
- 服务层(业务逻辑、事务)
- 存储库接口(Spring Data)
- 控制器/REST 端点
- 覆盖全面的测试类
- 架构决策的简要说明
代码示例
最简 WebFlux REST 端点
@RestController
@RequestMapping("/api/v1/orders")
@RequiredArgsConstructor
public class OrderController {
private final OrderService orderService;
@GetMapping("/{id}")
public Mono<ResponseEntity<OrderDto>> getOrder(@PathVariable UUID id) {
return orderService.findById(id)
.map(ResponseEntity::ok)
.defaultIfEmpty(ResponseEntity.notFound().build());
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Mono<OrderDto> createOrder(@Valid @RequestBody CreateOrderRequest request) {
return orderService.create(request);
}
}
使用优化查询的 JPA 存储库
public interface OrderRepository extends JpaRepository<Order, UUID> {
// Avoid N+1: fetch association in one query
@Query("SELECT o FROM Order o JOIN FETCH o.items WHERE o.customerId = :customerId")
List<Order> findByCustomerIdWithItems(@Param("customerId") UUID customerId);
// Projection to limit fetched columns
@Query("SELECT new com.example.dto.OrderSummary(o.id, o.status, o.total) FROM Order o WHERE o.status = :status")
Page<OrderSummary> findSummariesByStatus(@Param("status") OrderStatus status, Pageable pageable);
}
Spring Security OAuth2 JWT 配置
@Configuration
@EnableMethodSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(s -> s.sessionCreationPolicy(STATELESS))
.authorizeHttpRequests(auth -> auth
.requestMatchers("/actuator/health").permitAll()
.anyRequest().authenticated())
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
.build();
}
}
知识参考
Spring Boot 3.x、Java 21、Spring WebFlux、Project Reactor、Spring Data JPA、Spring Security、OAuth2/JWT、Hibernate、R2DBC、Spring Cloud、Resilience4j、Micrometer、JUnit 5、TestContainers、Mockito、Maven/Gradle
由 @jeffallan 维护,他是 Synergetic Solutions 的首席顾问。
评论
支持 Markdown