# Java Spring Boot Patterns ## Design Patterns ### Pattern 1: Input Validation Always validate input before processing: ```python def validate_input(data): if data is None: raise ValueError("Data cannot be None") if not isinstance(data, dict): raise TypeError("Data must be a dictionary") return True ``` ### Pattern 2: Error Handling Use consistent error handling: ```python try: result = risky_operation() except SpecificError as e: logger.error(f"Operation failed: {e}") handle_error(e) except Exception as e: logger.exception("Unexpected error") raise ``` ### Pattern 3: Configuration Loading Load and validate configuration: ```python import yaml def load_config(config_path): with open(config_path) as f: config = yaml.safe_load(f) validate_config(config) return config ``` ## Anti-Patterns to Avoid ### ❌ Don't: Swallow Exceptions ```python # BAD try: do_something() except: pass ``` ### ✅ Do: Handle Explicitly ```python # GOOD try: do_something() except SpecificError as e: logger.warning(f"Expected error: {e}") return default_value ``` ## Category-Specific Patterns: General ### Recommended Approach 1. Start with the simplest implementation 2. Add complexity only when needed 3. Test each addition 4. Document decisions ### Common Integration Points - Configuration: `assets/config.yaml` - Validation: `scripts/validate.py` - Documentation: `references/GUIDE.md` --- *Pattern library for java-spring-boot skill*