data-privacyHandle PII (Personally Identifiable Information) and GDPR requirements in a Java microservice — field-level encryption, masking in logs, data retention/TTL, right-to-be-forgotten (delete/anonymize), and data-privacy-by-design principles. Use whenever a service processes user data.
exception-handlingJava / Spring Boot error contract — typed domain exception hierarchy, static ExceptionMessages catalogue, @RestControllerAdvice mapping each exception to an RFC 9457 ProblemDetail. Use when throwing, adding or mapping any exception or error response; never throw a raw RuntimeException.
external-clientJava / Spring Boot: SDK-style package for a downstream service (HTTP, gRPC, broker, file store) — Service facade, CoreService, thin Client, request builders, response parsers/verifiers, Config. Use when a new downstream dependency or external API is introduced.
input-validationJava / Spring Boot input validation — Jakarta ConstraintValidator for field/parameter rules, Spring Validator for cross-field rules, custom annotations, injected rule beans, @InitBinder registration. Use when writing or changing any validation rule; no ad-hoc guards. Theory: `validation-pattern`.
messagingJava / Spring Boot Kafka or RabbitMQ — idempotent consumer, transactional outbox, dead-letter topic and redelivery, schema management (Avro/Protobuf/JSON-Schema), concurrency, exactly-once scope. Use when a service publishes or consumes events or commands.
permissionsJava / Spring Boot authorization via Strategy + Handler — PermissionsHandler dispatches by caller context (user, service account, external system) to PermissionsCheckStrategy beans. Use when deciding who may call an endpoint (admins, resource owner, service-account scopes).
persistenceJava / Spring Boot persistence — Spring Data JPA repositories and entities, Flyway migrations, transaction boundaries, optimistic locking, auditing, soft deletes, Specifications. Use when a service needs durable storage or a new entity, aggregate, migration or query.
rate-limitingJava / Spring Boot: Protect the service from abuse and ensure fair usage using rate-limiting strategies. Covers client-side rate limiting (token bucket), server-side enforcement (Bucket4j, Resilience4j), and distributed rate limiting with Redis. Use when an endpoint or client call must be throttled.
resilience-patternsJava / Spring Boot stability with Resilience4j — timeouts, bulkheads, circuit breakers, fallbacks, fail-fast. Use when a downstream call needs protection from slow or failing dependencies or cascading failures. For rate limiting use `rate-limiting`.
sdk-publishingJava / Spring Boot library or starter — auto-configuration with @ConditionalOnMissingBean defaults, configuration metadata, minimal API surface, semantic versioning, deprecation policy. Use when extracting shared code into its own artifact (client SDK, domain library, in-house starter).
security-hardeningJava / Spring Boot security beyond authn/authz — OWASP Top 10 checklist, CORS, security headers, secret management, dependency scanning, image signing. Use when a service exposes a public endpoint or handles sensitive data.
validation-patternJava / Spring Boot: background and rationale for input validation — why rules live in annotations, validators and rule beans, message design and testing strategy. Use when deciding how to externalize validation from business code; to write a validator apply `input-validation`.