springboot-best-practices

SkillDev tools

Spring Boot 4.0 patterns for enterprise Java 25 applications

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the springboot-best-practices skill

What this skill tells your AI

The instructions your AI receives, as published by baekenough/oh-my-customcode in .claude/skills/springboot-best-practices/SKILL.md and read by ahel’s review.

Rules

1. Project Structure

Layered architecture: controller (REST), service (business logic), repository (data access), model/entity, dto, config, exception.

2. Dependency Injection

Constructor injection preferred. Use @RequiredArgsConstructor with final fields. Avoid field injection with @Autowired.

// GOOD: Constructor injection
@Service
@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    private final EmailService emailService;
}

3. REST API Design

@RestController + @RequestMapping. Use @Validated for input, ResponseEntity for responses, proper HTTP status codes.

See examples/controller-example.java for reference implementation.

4. Service Layer

Business logic in services. @Transactional boundaries at service level. Interface + implementation pattern.

See examples/service-example.java for reference implementation.

5. Data Access

Spring Data JPA. @Query or method naming for custom queries. @Entity with proper JPA annotations.

See examples/repository-example.java and examples/entity-example.java for reference implementations.

6. Exception Handling

@RestControllerAdvice for global handling. Domain-specific exceptions with proper HTTP status mapping.

See examples/exception-handler-example.java for reference implementation.

7. Configuration

Profile-based: application-{profile}.yml. @ConfigurationProperties for type-safe config. Externalize sensitive values.

# application.yml
spring:
  profiles:
    active: ${SPRING_PROFILES_ACTIVE:local}
  datasource:
    url: ${DATABASE_URL}
    username: ${DATABASE_USERNAME}
    password: ${DATABASE_PASSWORD}

See examples/config-properties-example.java for type-safe configuration properties.

8. Security

Spring Security with SecurityFilterChain. Externalize secrets. Proper authentication/authorization patterns.

See examples/security-config-example.java for reference implementation.

9. Testing

@WebMvcTest (controller), @DataJpaTest (repository), @SpringBootTest (integration), @MockBean for mocking.

See examples/controller-test-example.java and examples/repository-test-example.java for reference implementations.

Application

Always: constructor injection, layered architecture, DTOs, global exception handling, externalized config, proper security, layer-appropriate tests.

Signals

GitHub stars
34
Forks
6
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
springboot-best-practices
Source
github.com/baekenough/oh-my-customcode