Projekty vs moduły

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. Otóż regularnie zdarza się, że na pytanie:
- "Jakie znasz moduły Spring Framework?"
odpowiadają:
- "Spring Boot, Spring Security..."
Natomiast na kolejne pytanie:
- "W takim razie jakie znasz projekty Springa?"
odpowiadają:
- "Spring Core, Spring MVC"
Zdarza się to również wśród całkiem dobrych programistów, którzy mają już na swoim koncie kilka projektów napisanych w pełni z użyciem Springa. Zacznijmy zatem od początku i wyjaśnijmy w czym tkwi problem, zapoznając się przy okazji z podstawowym podziałem platformy.
Najpierw Springa dzielimy na projekty, a dopiero później te projekty dzielimy na moduły (jeśli w ogóle jest co dzielić). W bieżącym rozdziale skupimy się na tym pierwszym (podstawowym) podziale. Jakie projekty wchodzą w skład najbardziej popularnej platformy (celowo ominęliśmy stwierdzenie framework) Java na świecie? Przedstawiamy to w postaci listy z krótkimi zajawkami na temat każdego z projektów. Z czasem będziemy rozwijać te opisy w osobnych rozdziałach i artykułach. Analizując listę zauważycie, że tłumaczymy dlaczego Spring Boot i Spring Security to nie moduły Spring Framework, a Spring MVC to nie projekt platformy jako takiej, tylko część samego Spring Frameworka.

Spring - lista projektów

  • Spring Boot
    Umożliwia szybkie tworzenie aplikacji gotowych do uruchomienia od ręki. Z ciekawszych rzeczy trzeba wspomnieć choćby o zestawach szablonów startowych oraz o wbudowanym kontenerze aplikacji web (np. Tomcat), dzięki czemu możemy taką aplikację uruchomić bez potrzeby stawiania własnego serwera.
  • Spring Framework
    Główna i najjaśniejsza gwiazda na firmamencie Springa. Fantastyczny 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 - podstawy oraz Wstrzykiwanie zależności - rozszerzenie.

    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 - Podstawowe funkcjonalności.
    Podkreślamy, że Spring Framework to jedynie jeden z projektów Springa, a nie Spring sam w sobie, stąd też we wstępie celowo 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
    Szeroki zbiór rozwiązań ułatwiających dostęp do danych zarówno relacyjnych jak i nie-relacyjnych. W ramach tego projektu rozwijane są moduły takie jak np. Spring Data JPA, opisywany w rozdziale: Spring Data JPA 1.x - Podstawowe funkcjonalności.
  • Spring Security
    Szalenie popularny projekt, który kompleksowo rozwiązuje różne zagadnienia dotyczące autentykacji oraz autoryzacji. Standardowo wykorzystywany w aplikacjach webowych.
  • Spring Cloud
    Królestwo systemów opartych na mikroserwisach. Zbudowane na Spring Boot i udostępniające szereg bibliotek ułatwiających pracę z mikroserwisami, np. load balancing, routing, czy rejestracja usług.
  • Spring Cloud Data Flow
    Usługa orkiestracji (orchestration service) zarządzająca synchronicznym i asynchronicznym wywoływaniem usług sieciowych (wraz z obsługą błędów oraz obsługą modyfikacji danych).
  • 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 HATEOAS
    Dostarcza API dla HATEOAS (Hypermedia As The Engine Of Application State).
  • Spring AMPQ
    Dostarcza wsparcie kluczowych założeń Springa dla rozwiązań powiadamiających typu AMPQ (Advanced Message Queuing Protocol)
  • 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 Web Flow
    Dostarcza rozwiązania umożliwijące tworzenie aplikacji webowych obsługujących przepływ danych wraz z kontrolą tego przepływu (zarządza procesem przechodzenia użytkownika z jednego stanu do innego zachowując wskazaną kolejność).
  • Spring Web Services
    Wspiera tworzenie webserviców typu SOAP (document-driven Web services).
  • Spring LDAP
    Upraszcza tworzenie aplikacji używających LDAP-a.
  • Spring Session
    Dostarcza API do zarządzania informacjami sesji użytkownika. Umożliwia integrację z HttpSession, WebSocket, WebSession.
Trzeba przyznać, że lista jest imponująca, a do tego to ciągle nie wszystkie projekty. Znajdziemy jeszcze takie jak, np: Spring For Android, Spring Kafka, Spring Social, Spring SCALA i wiele innych.
Nasza rekomendacja
Zalecamy aby w przypadku gdy mówimy o Springu jako o zbiorze projektów, używać pojęcia platforma i dopiero w ramach tej platformy wyróżniać projekt o nazwie Spring Framework.
Początkujących użytkowników Spring-a zachęcamy do zapoznania się z wyróżnionymi (pogrubionymi) tematami w pierwszej kolejności. Praktycznie każda aplikacja webowa stworzona z użyciem platformy Spring oparta jest w szczególności o Spring Framework, Spring Security oraz Spring Data JPA. Zatem chcąc efektywnie pracować w projektach informatycznych tworzonych z użyciem Springa należy te zagadnienia bardzo dobrze opanować.
Używamy w StartAPPa


Spring Boot, Spring Framework oraz Spring Data używamy oczywiście we wszystkich modułach w naszych kursach. Natomiast Spring Security znajduje się w kodzie źródłowym kursu: Logowanie & Reset. Załączamy fragment pliku pom.xml z szablonami startowymi Spring Boot oraz konfigurację security (oba elementy są omawiane w kursie):
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Konfiguracja Spring Boot Security
Linki
https://spring.io/projects
https://pl.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
https://en.wikipedia.org/wiki/HATEOAS

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:
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 .