Projekty vs Moduły Springa

Kurs Springa postanowiliśmy rozpocząć od przedstawienia i rozwiązania pewnego problemu, który obserwujemy od dłuższego czasu wśród programistów i który pojawia się szczególnie często podczas rozmów kwalifikacyjnych. Problem polega na myleniu pojęć projektu i modułu w kontekście Springa. Dlatego nasze wprowadzenie rozpoczniemy od wyjaśnienia, jak Spring dzieli się na projekty, a te projekty – w razie potrzeby – na moduły. To rozróżnienie jest kluczowe dla zrozumienia struktury i organizacji platformy Spring.

Lista projektów i modułów

  • Spring Boot
    Spring Boot, element ekosystemu Spring, jest przeznaczony do upraszczania procesu tworzenia i uruchamiania aplikacji Springowych. Jego kluczowe cechy to szybkie wdrożenie, łatwa konfiguracja i gotowe szablony startowe, które usprawniają rozwój aplikacji.

    Spring Boot zawiera wbudowany kontener aplikacji webowych, takich jak Tomcat, eliminując potrzebę osobnej konfiguracji serwera. Umożliwia to tworzenie samodzielnych aplikacji, które są gotowe do uruchomienia bezpośrednio po zbudowaniu, co sprawia, że jest idealny do szybkiego prototypowania i tworzenia mikroserwisów.

    Dodatkowo, Spring Boot ułatwia zarządzanie zależnościami, zapewniając zintegrowane wsparcie dla różnorodnych modułów Spring, takich jak Spring Data, Spring Security i inne. To, w połączeniu z obsługą wbudowanego serwera, jak Tomcat czy Jetty, sprawia, że Spring Boot jest atrakcyjnym rozwiązaniem dla szybkiego tworzenia i wdrażania aplikacji.
  • Spring Framework
    Główna i najjaśniejsza gwiazda na firmamencie Springa. Genialny projekt pozwalający na wygodne budowanie aplikacji webowych. To tutaj znajdziemy Spring Core, a w nim m.in: kontener IoC oraz wstrzykiwanie zależności (DI), opisywane szeroko w rozdziałach Wstrzykiwanie zależności: DI & IoC oraz Wstrzykiwanie: Qualifier & Bean.

    Spring Framework zawiera w sobie również framework Spring MVC (Spring Framework - Spring MVC), którego popularności nie trzeba chyba nikomu przedstawiać.
    Projektowi Spring Framework poświęcamy osobny rozdział, do którego serdecznie zapraszamy już teraz (w końcu to z niego korzysta większość użytkowników Springa) - Spring Framework - Podstawy.
    Pamietaj, że Spring Framework to jedynie jeden z projektów Springa, a nie cała platforma projektów, stąd też we wstępie użyliśmy słowa "platforma" zamiast "framework". Źródła problemu z konwencją nazewniczą należy szukać w początkach Springa, kiedy to istniał sam projekt Spring Framework i był potocznie nazywany Springiem. Wraz z rozbudową platformy zaczęły się pojawiać inne projekty i pojęcie platforma Springa uzyskało szersze znaczenie.
  • Spring Data
    Spring Data to projekt w ramach Spring Framework, który oferuje spójny i znany model programowania dla dostępu do danych, jednocześnie zachowując unikalne cechy leżących u podstaw systemów przechowywania danych.

    Umożliwia łatwe używanie technologii dostępu do danych, zarówno relacyjnych, jak i nierelacyjnych baz danych, frameworków map-reduce oraz usług danych opartych na chmurze. Spring Data skupia się na dostarczeniu potężnych abstrakcji repozytoriów i mapowania obiektów, dynamicznego wyprowadzania zapytań z nazw metod repozytoriów oraz wsparcia dla transparentnego audytu.

    W ramach tego projektu rozwijane są moduły takie jak np. Spring Data JPA, opisywany w rozdziale: Spring Data JPA - Podstawy.
  • Spring Security
    Spring Security to zaawansowany i wysoce konfigurowalny framework służący do uwierzytelniania i kontroli dostępu, który stał się standardem w zabezpieczaniu aplikacji opartych na Springu. Zapewnia on kompleksową ochronę przed różnymi atakami, takimi jak clickjacking czy cross-site request forgery, jednocześnie umożliwiając integrację z API Servlet oraz, opcjonalnie, z Spring Web MVC.

    Kluczowym elementem Spring Security jest szczegółowe kontrolowanie dostępu do zasobów aplikacji na podstawie ról i uprawnień użytkowników. W warstwie webowej, Spring Security wykorzystuje filtry, co pozwala na skuteczne zarządzanie zabezpieczeniami w aplikacjach webowych. Framework ten oferuje również możliwość tworzenia niestandardowych łańcuchów filtrów, które odpowiadają za przetwarzanie zapytań HTTP w kontekście bezpieczeństwa.
  • Spring Cloud
    Spring Cloud to zaawansowane narzędzie dla deweloperów, które ułatwia budowę rozproszonych systemów, szczególnie tych opartych na architekturze mikroserwisów. Zbudowane na Spring Boot, Spring Cloud oferuje zestaw narzędzi i funkcjonalności wspierających typowe wzorce w systemach rozproszonych.

    Kluczowe funkcje Spring Cloud obejmują dystrybuowaną i wersjonowaną konfigurację, co ułatwia centralne zarządzanie ustawieniami dla różnych mikroserwisów. Zapewnia także mechanizmy do rejestracji i odkrywania usług, umożliwiając efektywną komunikację w rozproszonych systemach. Funkcje te obejmują routing i połączenia między usługami, co pozwala na inteligentne przekierowywanie żądań i komunikację między serwisami.

    Load balancing jest również istotną cechą, pozwalającą na równomierne rozłożenie obciążeń między serwisami. Circuit Breakers chronią system przed awariami poprzez zapobieganie rozprzestrzenianiu się problemów z jednego mikroserwisu na inne.

    Spring Cloud wspiera również rozproszoną komunikację i krótkotrwałe mikroserwisy, co jest przydatne dla zadań o ograniczonym czasie życia. Dodatkowo, oferuje narzędzia do testowania kontraktów sterowanych przez konsumentów i producentów, co jest kluczowe dla zapewnienia niezawodności interfejsów między usługami.
  • Spring Cloud Data Flow
    Spring Cloud Data Flow umożliwia tworzenie i orkiestrowanie przepływów danych w aplikacjach mikroserwisowych. Jest to platforma do budowy aplikacji typu stream i batch, która integruje różne usługi i technologie w chmurze.

    Pozwala na łatwe tworzenie, wdrażanie i zarządzanie aplikacjami przetwarzającymi dane, wykorzystując do tego celu DSL (Domain-Specific Language), interfejs graficzny oraz API REST. Jest to szczególnie przydatne w środowiskach opartych na chmurze, gdzie elastyczność i skalowalność aplikacji są kluczowe.
  • Spring Integration
    Wsparcie dla Enterprise Integration Patterns czyli wzorców integracyjnych klasy enterprise. Mamy tutaj choćby dostęp do kolejek RabbitMQ, czy też mechanizmu JMS, albo np. do funkjconalności WebServices typu REST i SOAP.
  • Spring Batch
    Wspiera przetwarzanie dużej ilości danych. Zawiera obsługę zatrzymywania, restartu lub ponawiania procesów, zarządzania nimi w transakcji i wiele innych ciekawych rozwiązań.

    Spring Batch umożliwia tworzenie skomplikowanych prac przetwarzania danych, które mogą obejmować sekwencje czytania danych, ich przetwarzania i zapisywania. Konfiguracja pracy w Spring Batch jest elastyczna i można ją dostosować do konkretnych wymagań aplikacji. Na przykład, możliwe jest tworzenie pracy przetwarzającej dane z pliku CSV do formatu XML, co jest jednym z wielu praktycznych zastosowań Spring Batch.
  • Spring HATEOAS
    Dostarcza API dla HATEOAS (Hypermedia As The Engine Of Application State). Spring HATEOAS zapewnia narzędzia do tworzenia aplikacji webowych zgodnych z architekturą REST, stosując się do zasady HATEOAS (Hypermedia As The Engine Of Application State).

    Umożliwia tworzenie linków do zasobów w API REST. Te linki są dynamiczne i mogą się zmieniać w zależności od kontekstu, na przykład stanu zasobu lub uprawnień użytkownika. Spring HATEOAS wspiera różne formaty reprezentacji hypermedia, takie jak HAL, Atom, i inne.

    Celem Spring HATEOAS jest ułatwienie tworzenia aplikacji, które są bardziej elastyczne i lepiej dostosowane do zmian, poprzez wykorzystanie hypermediów jako mechanizmu sterowania stanem aplikacji. To podejście zwiększa odkrywalność i elastyczność API, umożliwiając klientom adaptację do zmian bez konieczności aktualizacji.

    Spring AMQP składa się z dwóch części: spring-amqp, która jest podstawową abstrakcją, oraz spring-rabbit, będącą implementacją dla RabbitMQ.
  • Spring AMPQ
    Dostarcza wsparcie kluczowych założeń Springa dla rozwiązań powiadamiających typu AMPQ (Advanced Message Queuing Protocol).

    Spring AMQP oferuje wysokopoziomową abstrakcję w postaci "template" do wysyłania i odbierania wiadomości oraz wspiera POJO (Plain Old Java Objects) napędzane przez wiadomości za pomocą "listener container". Te biblioteki ułatwiają zarządzanie zasobami AMQP, jednocześnie promując użycie wstrzykiwania zależności i deklaratywnej konfiguracji.

    Spring AMQP jest więc wszechstronnym narzędziem do budowania skalowalnych i elastycznych rozwiązań komunikacji między aplikacjami w środowisku Java, wykorzystując zalety AMQP dla asynchronicznej wymiany wiadomości.
  • Spring Mobile
    Ułatwia programowanie moblinych aplikacji webowych poprzez takie rozwiązania jak np. detekcja typu urządzenia mobilnego wysyłąjącego żądanie do aplikacji web.
  • Spring for Apache Kafka
    Spring Kafka to moduł w ekosystemie Spring, który umożliwia łatwą integrację aplikacji Spring z Apache Kafka, popularnym systemem do przetwarzania strumieniowego i obsługi dużych wolumenów danych.

    Zapewnia on wygodne, springowe abstrakcje do komunikacji z Kafka, w tym wysyłanie i odbieranie wiadomości. Jest szczególnie przydatny w systemach, które wymagają niezawodnego, skalowalnego przetwarzania i rozsyłania wiadomości w rozproszonych środowiskach. Spring Kafka skutecznie łączy prostotę i moc Spring Framework z wydajnością i skalowalnością Apache Kafka.
  • Spring Web Services
    Wspiera tworzenie webserviców typu SOAP (document-driven Web services). Projekt ten umożliwia tworzenie usług opartych na dokumentach, zapewniając narzędzia do obsługi wiadomości i integracji z różnymi specyfikacjami SOAP. Jest to szczególnie przydatne w scenariuszach, gdzie wymagana jest obsługa złożonych schematów XML i bezpieczna komunikacja pomiędzy systemami.
  • Spring LDAP
    Spring LDAP ułatwia tworzenie aplikacji wykorzystujących LDAP (Lightweight Directory Access Protocol). Jego głównym celem jest uproszczenie procesu integracji z serwerami LDAP, zapewniając prostszy i bardziej spójny sposób na obsługę operacji związanych z LDAP, takich jak wyszukiwanie, tworzenie, modyfikacja i usuwanie wpisów.

    Dzięki Spring LDAP, deweloperzy mogą efektywniej pracować z LDAP, korzystając z dobrze znanego modelu programowania Spring i unikając skomplikowanych detali związanych z bezpośrednią obsługą protokołu LDAP.
  • Spring Session
    Spring Session zapewnia API do zarządzania sesją użytkownika. Ułatwia obsługę sesji w aplikacjach, umożliwiając integrację z HttpSession, WebSocket i WebSession.

    Projekt ten pozwala na ujednolicenie sposobu zarządzania informacjami sesji w różnorodnych środowiskach i typach aplikacji, co jest szczególnie przydatne w rozproszonych systemach i aplikacjach internetowych. Dzięki Spring Session deweloperzy mogą skuteczniej zarządzać danymi sesji, zapewniając lepszą kontrolę i elastyczność w pracy z aplikacjami opartymi na Springu.
Prezentowana lista projektów jest całkiem pokaźna, ale tak naprawdę projektów i modułów Springa jest znacznie więcej. Ponadto, lista ta może się zmieniać wraz z rozwojem technologii i pojawianiem się nowych projektów. Link do aktualnych projektów znajdziesz w sekcji "Topowe Materiały".
Zdjęcie autora
Autor: Jarek Klimas
Data: 03 stycznia 2024
Labele: Backend, Podstawowy, Java
Topowe Materiały
Spring IO: Spring Boot
Spring IO: Spring Framework
Spring IO: Spring Web MVC
Spring IO: Spring Data
Spring IO: Spring Security
Spring IO: Spring Kafka

Baeldung: Learn Spring Boot
Baeldung: Spring Framework Introduction
Baeldung: Spring MVC Tutorial
Baeldung: Introduction to Spring Data JPA
Baeldung: Spring Security
Baeldung: Intro to Apache Kafka with Spring

Udemy: [NEW] Spring Boot 3, Spring 6 & Hibernate for Beginners  —  polskie napisy

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE