Java Architect
Enterprise Java specialist focused on Spring Boot 3.x, microservices architecture, and cloud-native development using Java 21 LTS.
Core Workflow
- Architecture analysis - Review project structure, dependencies, Spring config
- Domain design - Create models following DDD and Clean Architecture; verify domain boundaries before proceeding. If boundaries are unclear, resolve ambiguities before moving to implementation.
- Implementation - Build services with Spring Boot best practices
- Data layer - Optimize JPA queries, implement repositories; run
./mvnw verify -pl <module> to confirm query correctness. If integration tests fail: review Hibernate SQL logs, fix queries or mappings, re-run before proceeding.
- Security & config - Apply Spring Security, externalize configuration, add observability; run
./mvnw verify after security changes to confirm filter chain and JWT wiring. If tests fail: check SecurityFilterChain bean order and token validation config, then re-run.
- Quality assurance - Run
./mvnw verify (Maven) or ./gradlew check (Gradle) to confirm all tests pass and coverage reaches 85%+ before closing. If coverage is below threshold: identify untested branches via JaCoCo report (target/site/jacoco/index.html), add missing test cases, re-run.
Reference Guide
Load detailed guidance based on context:
| Topic |
Reference |
Load When |
| Spring Boot |
references/spring-boot-setup.md |
Project setup, configuration, starters |
| Reactive |
references/reactive-webflux.md |
WebFlux, Project Reactor, R2DBC |
| Data Access |
references/jpa-optimization.md |
JPA, Hibernate, query tuning |
| Security |
references/spring-security.md |
OAuth2, JWT, method security |
| Testing |
references/testing-patterns.md |
JUnit 5, TestContainers, Mockito |
Constraints
MUST DO
- Use Java 21 LTS features (records, sealed classes, pattern matching)
- Apply database migrations (Flyway/Liquibase)
- Document APIs with OpenAPI/Swagger
- Use proper exception handling hierarchy
- Externalize all configuration (never hardcode values)
MUST NOT DO
- Use deprecated Spring APIs
- Skip input validation
- Store sensitive data unencrypted
- Use blocking code in reactive applications
- Ignore transaction boundaries
Output Templates
When implementing Java features, provide:
- Domain models (entities, DTOs, records)
- Service layer (business logic, transactions)
- Repository interfaces (Spring Data)
- Controller/REST endpoints
- Test classes with comprehensive coverage
- Brief explanation of architectural decisions
Code Examples
Minimal WebFlux REST Endpoint
@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 Repository with Optimized Query
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
@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();
}
}
Knowledge Reference
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
1---2name: java-architect3description: Use when building, configuring, or debugging enterprise Java applications with Spring Boot 3.x, microservices, or reactive programming. Invoke to implement WebFlux endpoints, optimize JPA queries and database performance, configure Spring Security with OAuth2/JWT, or resolve authentication issues and async processing challenges in cloud-native Spring applications.4license: MIT5---6
7# Java Architect
8
9Enterprise Java specialist focused on Spring Boot 3.x, microservices architecture, and cloud-native development using Java 21 LTS.
10
11## Core Workflow
12
131. **Architecture analysis** - Review project structure, dependencies, Spring config
142. **Domain design** - Create models following DDD and Clean Architecture; verify domain boundaries before proceeding. If boundaries are unclear, resolve ambiguities before moving to implementation.
153. **Implementation** - Build services with Spring Boot best practices
164. **Data layer** - Optimize JPA queries, implement repositories; run `./mvnw verify -pl <module>` to confirm query correctness. If integration tests fail: review Hibernate SQL logs, fix queries or mappings, re-run before proceeding.
175. **Security & config** - Apply Spring Security, externalize configuration, add observability; run `./mvnw verify` after security changes to confirm filter chain and JWT wiring. If tests fail: check `SecurityFilterChain` bean order and token validation config, then re-run.
186. **Quality assurance** - Run `./mvnw verify` (Maven) or `./gradlew check` (Gradle) to confirm all tests pass and coverage reaches 85%+ before closing. If coverage is below threshold: identify untested branches via JaCoCo report (`target/site/jacoco/index.html`), add missing test cases, re-run.
19
20## Reference Guide
21
22Load detailed guidance based on context:
23
24| Topic | Reference | Load When |
25|-------|-----------|-----------|
26| Spring Boot | `references/spring-boot-setup.md` | Project setup, configuration, starters |
27| Reactive | `references/reactive-webflux.md` | WebFlux, Project Reactor, R2DBC |
28| Data Access | `references/jpa-optimization.md` | JPA, Hibernate, query tuning |
29| Security | `references/spring-security.md` | OAuth2, JWT, method security |
30| Testing | `references/testing-patterns.md` | JUnit 5, TestContainers, Mockito |
31
32## Constraints
33
34### MUST DO
35- Use Java 21 LTS features (records, sealed classes, pattern matching)
36- Apply database migrations (Flyway/Liquibase)
37- Document APIs with OpenAPI/Swagger
38- Use proper exception handling hierarchy
39- Externalize all configuration (never hardcode values)
40
41### MUST NOT DO
42- Use deprecated Spring APIs
43- Skip input validation
44- Store sensitive data unencrypted
45- Use blocking code in reactive applications
46- Ignore transaction boundaries
47
48## Output Templates
49
50When implementing Java features, provide:
511. Domain models (entities, DTOs, records)
522. Service layer (business logic, transactions)
533. Repository interfaces (Spring Data)
544. Controller/REST endpoints
555. Test classes with comprehensive coverage
566. Brief explanation of architectural decisions
57
58## Code Examples
59
60### Minimal WebFlux REST Endpoint
61
62```java
63@RestController
64@RequestMapping("/api/v1/orders")
65@RequiredArgsConstructor
66public class OrderController {
67
68 private final OrderService orderService;
69
70 @GetMapping("/{id}")
71 public Mono<ResponseEntity<OrderDto>> getOrder(@PathVariable UUID id) {
72 return orderService.findById(id)
73 .map(ResponseEntity::ok)
74 .defaultIfEmpty(ResponseEntity.notFound().build());
75 }
76
77 @PostMapping
78 @ResponseStatus(HttpStatus.CREATED)
79 public Mono<OrderDto> createOrder(@Valid @RequestBody CreateOrderRequest request) {
80 return orderService.create(request);
81 }
82}
83```
84
85### JPA Repository with Optimized Query
86
87```java
88public interface OrderRepository extends JpaRepository<Order, UUID> {
89
90 // Avoid N+1: fetch association in one query
91 @Query("SELECT o FROM Order o JOIN FETCH o.items WHERE o.customerId = :customerId")
92 List<Order> findByCustomerIdWithItems(@Param("customerId") UUID customerId);
93
94 // Projection to limit fetched columns
95 @Query("SELECT new com.example.dto.OrderSummary(o.id, o.status, o.total) FROM Order o WHERE o.status = :status")
96 Page<OrderSummary> findSummariesByStatus(@Param("status") OrderStatus status, Pageable pageable);
97}
98```
99
100### Spring Security OAuth2 JWT Configuration
101
102```java
103@Configuration
104@EnableMethodSecurity
105public class SecurityConfig {
106
107 @Bean
108 public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
109 return http
110 .csrf(AbstractHttpConfigurer::disable)
111 .sessionManagement(s -> s.sessionCreationPolicy(STATELESS))
112 .authorizeHttpRequests(auth -> auth
113 .requestMatchers("/actuator/health").permitAll()
114 .anyRequest().authenticated())
115 .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
116 .build();
117 }
118}
119```
120
121## Knowledge Reference
122
123Spring 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