$ account spring-projects
Spring Boot is a production-grade Java framework that simplifies building standalone, web, and microservice applications on the Spring platform. The repository provides the core framework (auto-configuration, embedded web servers, actuator endpoints), build plugins (Maven, Gradle, Ant) for packaging executable JARs/WARs and OCI images, a custom classloader for nested JARs, and a buildpack platform integration for Docker image creation. Its architecture is deeply modular: the `core/spring-boot` module handles application bootstrap and configuration binding; `core/spring-boot-autoconfigure` contains hundreds of conditional auto-configuration classes; `loader/spring-boot-loader` enables nested JAR execution; and `build-plugin/*` integrates with build tools. Extensive documentation and smoke tests verify integrations with databases, messaging, security, observability, and cloud platforms. Spring Boot is not an end-user application but a framework with a highly refined convention-over-configuration approach, strong null-safety via `@NullMarked`, and a consistent pattern of functional customizers and failure analyzers. The code exhibits exceptional craftsmanship in modularity, test coverage, and API design, though its sheer size and many deprecations indicate ongoing evolution.
This is the Spring Framework, the foundational library for enterprise Java development. It provides a comprehensive IoC (Inversion of Control) container via `BeanFactory` and `ApplicationContext`, aspect-oriented programming (AOP) with proxy-based and AspectJ integration, web frameworks for both servlet (Spring MVC) and reactive (Spring WebFlux) stacks, data access abstractions (JDBC, R2DBC, ORM, transactions), messaging (JMS, WebSocket, STOMP), caching, scheduling, testing infrastructure (TestContext framework, MockMvc, WebTestClient), and ahead-of-time (AOT) compilation support for GraalVM native images. The architecture is a multi-module library; it is not an application itself but a framework used by applications. Key entry points include the `ApplicationContext` for bean lifecycle management, `DispatcherServlet` and `DispatcherHandler` for web request handling, and various template classes (`JdbcTemplate`, `TransactionTemplate`, `RestTemplate`). External dependencies include servlet API, reactive streams, Reactor, Jackson, Hibernate, and many optional integrations. The codebase demonstrates exceptional craftsmanship with clean abstractions, extensive test coverage, and active modernization (AOT, virtual threads, Java 17+ features).
Spring Security is a comprehensive authentication and authorization library for Spring-based applications, supporting both Servlet (MVC) and Reactive (WebFlux) stacks. In production, it intercepts HTTP requests via a configurable filter chain (SecurityFilterChain for servlet, WebFilterChain for reactive) to enforce authentication, session management, CSRF protection, security headers, CORS, and access control. It provides a pluggable architecture with core abstractions (AuthenticationManager, AuthorizationManager, SecurityContextHolderStrategy) and protocol-specific modules for OAuth2/OIDC, SAML2, LDAP, CAS, WebAuthn, Kerberos, and JWT. The library is configured via annotations (@EnableWebSecurity, @EnableMethodSecurity), a Kotlin DSL, or XML namespace, and integrates deeply with Spring's configuration and dependency injection. The architecture is modular: the 'core' module defines foundational interfaces (Authentication, GrantedAuthority, SecurityContext), 'web' implements servlet and reactive security filters, 'config' provides annotation-driven and XML configuration support, and protocol modules (oauth2, saml2, ldap, webauthn, cas) handle specific authentication/authorization flows. Key entry points include the HttpSecurity/ServerHttpSecurity builders, SecurityFilterChain, and method-security annotations (@PreAuthorize, @Secured). External dependencies include Spring Framework, Jackson (for serialization), Project Reactor (for reactive support), OpenSAML, and LDAP libraries. The codebase demonstrates strong engineering practices: extensive use of strategy, composite, and builder patterns; clean separation of servlet and reactive APIs; and a consistent Jackson mixin pattern for serialization of security objects.
This repository is the official Spring PetClinic sample application, a classic web application for managing a veterinary clinic's owners, pets, and visits. It is built as a Spring Boot monolith using Spring MVC, Spring Data JPA, Thymeleaf templating, and an H2 in-memory database by default, with optional MySQL and PostgreSQL backends. The application demonstrates a wide range of Spring Boot features including caching (JCache), internationalization (10+ languages), form validation, custom formatters, and comprehensive testing with JUnit 5, Mockito, and Testcontainers. It also includes a JMeter load test plan, Kubernetes deployment manifests, and CI/CD workflows for Maven and Gradle. The architecture follows a standard layered pattern: controllers handle HTTP requests, repositories provide data access via Spring Data JPA, and Thymeleaf templates render the UI. Domain models use a clean inheritance hierarchy (BaseEntity, NamedEntity, Person) to reduce duplication. The codebase is well-structured and serves as a reference for Spring Boot best practices, though it is intentionally a sample and not a production-ready system. It is actively maintained by the Spring team and tracks the latest Spring Boot releases. Key functional areas include owner management (CRUD with search), pet management (with duplicate name detection), visit scheduling (with future-date validation), and a veterinarian listing page. The application also includes a crash controller to demonstrate error handling and a welcome page. The code is clean, well-tested, and follows Spring conventions, making it a valuable learning resource for developers new to Spring Boot.
Spring Session is a library that provides a robust, pluggable session management solution for Spring-based applications. It abstracts session storage behind a `SessionRepository` interface, supporting multiple backends including Redis, JDBC, and in-memory. The library seamlessly integrates with both Servlet and WebFlux stacks, replacing the standard `HttpSession` with a configurable, cluster-friendly alternative. It also offers deep integration with Spring Security for concurrent session control and remember-me authentication, and with WebSocket for session-aware messaging. The architecture is modular: `spring-session-core` defines the core API (Session, SessionRepository, FindByIndexNameSessionRepository, HttpSessionIdResolver) and provides the servlet filter (`SessionRepositoryFilter`) and reactive store (`SpringSessionWebSessionStore`). `spring-session-data-redis` implements Redis-backed repositories with support for indexing by principal name and expiration via sorted sets and keyspace notifications. `spring-session-jdbc` provides a JDBC-backed repository with dialect-specific SQL schemas and customizable queries. Configuration is annotation-driven (e.g., `@EnableRedisHttpSession`, `@EnableJdbcHttpSession`) and supports customization through beans like `CookieSerializer`, `SessionRepositoryCustomizer`, and `FlushMode`/`SaveMode`. Key data flows involve session creation, attribute modification, expiration, and principal-based lookup. The library uses events (`SessionCreatedEvent`, `SessionDeletedEvent`, `SessionExpiredEvent`) for lifecycle notifications and supports AOT compilation for GraalVM native images. External dependencies include Spring Framework, Spring Data Redis, Spring Data JDBC, Reactor, and optionally Jackson for JSON serialization. The build system uses Gradle with custom convention plugins for publishing, documentation, and release management.
This is the Spring Tools 4 (STS4) repository, a comprehensive set of IDE tooling for Spring Boot development. It provides language servers (LSP) for Spring Boot (Java, YAML, properties, XML), Concourse CI, BOSH, and Cloud Foundry manifests, along with Eclipse plugins and VS Code extensions. The architecture separates headless language servers (built as Spring Boot applications) from IDE-specific frontends, with shared commons libraries for YAML, Java project indexing, metadata, and live process monitoring via Actuator. The codebase is professional and well-structured but shows signs of organic growth over a decade, with some code duplication between the Eclipse and headless/VS Code paths, deprecated API usage, and developer-specific hardcoded paths. It is actively maintained by VMware/Spring engineering team with strong CI/CD pipelines.