Build Spring Boot 4.0 applications - project setup, REST controllers, dependency injection, configuration, actuator, and testing
91
90%
Does it follow best practices?
Impact
97%
1.79xAverage score across 3 eval scenarios
Passed
No known issues
{
"context": "An agent is asked to create a new Spring Boot 4 REST API from scratch with actuator support and proper exception handling. The evaluation checks whether the agent uses the correct Boot 4 project structure, canonical dependency names, dependency injection style, exception handling with ProblemDetail, and actuator configuration.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Boot 4.0.5 version",
"description": "The Spring Boot parent or plugin version is set to 4.0.5",
"max_score": 8
},
{
"name": "webmvc starter canonical name",
"description": "The web starter uses the artifact ID 'spring-boot-starter-webmvc' (canonical Boot 4 name)",
"max_score": 12
},
{
"name": "Constructor injection used",
"description": "Services and controllers use constructor injection; no @Autowired annotation on single-constructor classes",
"max_score": 3
},
{
"name": "ProblemDetail exception handling",
"description": "Global exception handler uses ProblemDetail as the return type (not custom error DTOs or ResponseEntity<String>)",
"max_score": 14
},
{
"name": "ControllerAdvice used",
"description": "Exception handling is implemented with @ControllerAdvice (not per-controller @ExceptionHandler)",
"max_score": 6
},
{
"name": "problemdetails property enabled",
"description": "application.properties includes 'spring.mvc.problemdetails.enabled=true'",
"max_score": 7
},
{
"name": "Actuator starter included",
"description": "spring-boot-starter-actuator is included as a dependency",
"max_score": 6
},
{
"name": "Actuator endpoints exposed",
"description": "management.endpoints.web.exposure.include is set and includes health, info, metrics (and optionally prometheus)",
"max_score": 7
},
{
"name": "Health details shown",
"description": "management.endpoint.health.show-details=always is set in application.properties",
"max_score": 5
},
{
"name": "Health probes enabled",
"description": "management.endpoint.health.probes.enabled=true is set",
"max_score": 5
},
{
"name": "Actuator port configured",
"description": "management.server.port is configured (e.g., 9090) to separate actuator traffic from app traffic",
"max_score": 5
},
{
"name": "Proper HTTP return codes",
"description": "POST endpoints return 201 Created with a Location URI; DELETE returns 204 No Content",
"max_score": 6
},
{
"name": "No Undertow usage",
"description": "Undertow is not referenced or included as the embedded server",
"max_score": 6
},
{
"name": "Correct Java version",
"description": "Java source/target compatibility is set to 17 or higher in the build file",
"max_score": 3
}
]
}