Java, Spring Framework, and Spring Boot coding standards from authoritative docs/explanation/ documentation
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill swe-programming-java --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Swe Programming Java?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-swe-programming-java)More formats (shields.io, HTML) on the badges page.
---
name: swe-programming-java
description: Java, Spring Framework, and Spring Boot coding standards from authoritative docs/explanation/ documentation
---
# Java Stack Coding Standards
## Purpose
Progressive disclosure of Java stack coding standards for agents writing Java code.
**Coverage**: Java language → Spring Framework → Spring Boot (full technology stack)
**Usage**: Auto-loaded for agents when writing any Java/Spring code. Provides quick reference to idioms, best practices, and antipatterns across the full stack.
---
## Java Language Standards
**Authoritative Source**: [docs/explanation/software-engineering/programming-languages/java/README.md](../../../docs/explanation/software-engineering/programming-languages/java/README.md)
### Naming Conventions
**Classes and Interfaces**: PascalCase
- Classes: `UserAccount`, `PaymentProcessor`
- Interfaces: `Comparable`, `Serializable` (adjective form preferred)
- Abstract classes: `AbstractProcessor`, `BaseEntity`
**Methods and Variables**: camelCase
- Methods: `calculateTotal()`, `findUserById()`
- Variables: `userName`, `totalAmount`
- Constants: `UPPER_SNAKE_CASE` (`MAX_RETRIES`, `DEFAULT_TIMEOUT`)
**Packages**: lowercase with dots
- `com.demo.domain.account`
- `com.demo.infrastructure.persistence`
### Modern Java Features (Java 17+)
**Records**: Use for immutable data carriers
```java
public record UserAccount(String id, String name, LocalDateTime createdAt) {}
```
**Sealed Classes**: Use for closed type hierarchies
```java
public sealed interface Payment permits CreditCard, BankTransfer {}
```
**Pattern Matching**: Use for type-safe casts
```java
if (obj instanceof String s) {
return s.toUpperCase();
}
```
**Text Blocks**: Use for multi-line strings
```java
String json = """
{
"name": "value"
}
""";
```
### Error Handling
**Checked Exceptions**: For recoverable errors
- Use for business logic failures
- Document with `@throws` javadoc
**Unchecked Exceptions**: For programming errors
- Use for validation failures, illegal state
- Extend `RuntimeException`
**Try-with-resources**: Always use for AutoCloseable
```java
try (var reader = Files.newBufferedReader(path)) {
// Use reader
}
```
### Testing Standards
**JUnit 5**: Primary testing framework
- `@Test` for test methods
- `@BeforeEach`, `@AfterEach` for setup/teardown
- `@ParameterizedTest` for data-driven tests
**AssertJ**: Fluent assertions
```java
assertThat(result)
.isNotNull()
.hasSize(3)
.containsExactly("a", "b", "c");
```
**Mockito**: Mocking framework
```java
@Mock
private UserRepository repository;
```
### Security Practices
**Input Validation**: Always validate external input
- Use Bean Validation annotations (`@NotNull`, `@Size`)
- Validate before processing
**Sensitive Data**: Never log secrets
- Use `SensitiveDataFilter` for logging
- Clear sensitive data after use
**SQL Injection**: Use prepared statements
```java
var stmt = connection.prepareStatement("SELECT * FROM users WHERE id = ?");
stmt.setString(1, userId);
```
### Java Comprehensive Documentation
- [Java README](../../../docs/explanation/software-engineering/programming-languages/java/README.md)
- [Functional Programming](../../../repo-governance/development/pattern/functional-programming.md)
---
## Spring Framework Standards
**Authoritative Source**: [docs/explanation/software-engineering/platform-web/tools/jvm-spring/README.md](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/README.md)
**Foundation**: Builds on Java language standards above.
### IoC Container and ApplicationContext
- Use `ApplicationContext` for production code
- Prefer annotation-based configuration (`@Configuration`, `@Bean`)
- Use component scanning with explicit base packages
### Dependency Injection Patterns
- **Constructor injection** (preferred): Use for required dependencies
- Field injection (avoid): Creates testing difficulties
- Setter injection: Use for optional dependencies
### Bean Lifecycle and Scopes
- Singleton (default): Stateless services
- Prototype: Stateful objects
- Request/Session: Web-scoped beans
- Use `@PostConstruct` and `@PreDestroy` for lifecycle callbacks
### AOP Patterns
- Use `@Aspect` for cross-cutting concerns
- Prefer declarative transactions (`@Transactional`)
- Apply aspects for logging, security, caching
### Data Access
- Use `JdbcTemplate` for SQL operations
- Prefer Spring Data JPA repositories
- Apply transaction management at service layer
- Use `@Transactional` for declarative transactions
### Web MVC
- Use `@RestController` for REST APIs
- Apply `@RequestMapping` for endpoint routing
- Use `@Valid` for request validation
- Implement `@ControllerAdvice` for global exception handling
### Spring Framework Comprehensive Documentation
**Core Patterns**:
- [Idioms](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/idioms.md)
- [Best Practices](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/best-practices.md)
- [Anti-Patterns](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/anti-patterns.md)
**Configuration & Architecture**:
- [Configuration](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/configuration.md)
- [Dependency Injection](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/dependency-injection.md)
- [AOP](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/aop.md)
- [Build Configuration](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/build-configuration.md)
**Data & Web**:
- [Data Access](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/data-access.md)
- [Web MVC](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/web-mvc.md)
- [REST APIs](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/rest-apis.md)
**Quality & Operations**:
- [Security](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/security.md)
- [Testing](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/testing.md)
- [Performance](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/performance.md)
- [Observability](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/observability.md)
- [Deployment](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/deployment.md)
- [Code Quality](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/code-quality.md)
**Domain & Design**:
- [DDD Standards](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/ddd-standards.md)
- [API Standards](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/api-standards.md)
- [Concurrency Standards](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/concurrency-standards.md)
- [Error Handling Standards](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/error-handling-standards.md)
- [Version Migration](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring/version-migration.md)
---
## Spring Boot Standards
**Authoritative Source**: [docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/README.md](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/README.md)
**Foundation**: Builds on Spring Framework standards above.
### Auto-configuration and Starters
- Use Spring Boot starters for dependency management
- Customize auto-configuration with `application.yml` properties
- Exclude unnecessary auto-configurations explicitly
- Document custom auto-configurations
### Configuration Properties
- Use `@ConfigurationProperties` for type-safe configuration
- Group related properties in dedicated classes
- Validate configuration with Bean Validation annotations
- Use profiles for environment-specific configuration
### REST API Development
- Use `@RestController` for REST endpoints
- Apply `@Valid` for request validation
- Implement global exception handling with `@ControllerAdvice`
- Use HATEOAS for hypermedia-driven APIs
- Document APIs with OpenAPI/Swagger
### Spring Boot Data Access
- Use Spring Data JPA repositories
- Prefer derived query methods over `@Query`
- Apply `@Transactional` at service layer
- Use `@DataJpaTest` for repository testing
### Spring Boot Security
- Use Spring Security with OAuth2/JWT
- Implement method-level security with `@PreAuthorize`
- Configure CORS for API access
- Use `@AuthenticationPrincipal` for user context
### Spring Boot Testing
- Use `@SpringBootTest` for integration tests
- Apply test slices: `@WebMvcTest`, `@DataJpaTest`, `@JsonTest`
- Use TestContainers for external dependencies
- Mock external services with `@MockBean`
### Observability
- Enable Spring Boot Actuator for monitoring
- Expose custom metrics with Micrometer
- Implement custom health indicators
- Use structured logging with Logback
### Spring Boot Comprehensive Documentation
**Core Patterns**:
- [Idioms](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/idioms.md)
- [Best Practices](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/best-practices.md)
- [Anti-Patterns](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/anti-patterns.md)
**Configuration & Architecture**:
- [Configuration](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/configuration.md)
- [Dependency Injection](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/dependency-injection.md)
- [AOP](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/aop.md)
**Data & Web**:
- [Data Access](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/data-access.md)
- [REST APIs](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/rest-apis.md)
- [WebFlux Reactive](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/webflux-reactive.md)
**Quality & Operations**:
- [Security](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/security.md)
- [Testing](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/testing.md)
- [Performance](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/performance.md)
- [Observability](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/observability.md)
- [Deployment](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/deployment.md)
**Domain & Design**:
- [Domain-Driven Design](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/domain-driven-design.md)
- [Functional Programming](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/functional-programming.md)
- [Version Migration](../../../docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/version-migration.md)
---
## Related Skills
- docs-applying-content-quality
- repo-practicing-trunk-based-development
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!