Spring Boot
Practical experience building enterprise REST services, OAuth2 security layers, WebSocket brokers, and Spring AI pipelines.
1 / The Enterprise Backbone
Spring Boot became the framework I reached for whenever a Java backend needed to be production-ready without months of boilerplate configuration. Its opinionated defaults — dependency injection, auto-configured starters, embedded servers — let me focus on business logic rather than infrastructure wiring.
2 / Production Services
In Trajectory, Spring Boot powered the REST microservices that handled application tracking, JWT session authorization, OAuth2 workflows, and recruiter funnel metrics. The service was containerized with Docker Compose and deployed to AWS EC2 behind Nginx. Spring Security configuration required precise filter chain ordering when combining JWT token authentication with OAuth2 — a lesson I learned through debugging rather than documentation.
3 / AI Integration
Conclave introduced Spring Boot as a platform for AI-integrated services through Spring AI. The framework provided clean abstractions for integrating local Ollama models alongside cloud LLM providers, while WebSocket and STOMP broker coordination handled real-time multi-model debate streaming. Spring Boot Actuator with Micrometer provided Prometheus metric exposure with minimal configuration overhead.
4 / Distributed Systems
Cairn used Spring Boot as the service chassis for a distributed caching engine, where Virtual Threads and Consistent Hashing ran inside the Spring application context. The auto-configuration system occasionally created conflicts during multi-module builds — debugging those required understanding the exact order in which Spring initializes bean dependencies.
5 / Lessons
Write explicit SecurityFilterChain beans early rather than relying on default fallback security configurations. Spring Data JPA handles CRUD elegantly, but the moment you need custom aggregation or window functions, switch to native queries without hesitation. And Spring AI is genuinely useful — it provides a clean Java-native abstraction for prompt management and structured output extraction without forcing you into Python for every LLM integration.
