Spring Framework to wszechstronna platforma typu open source przeznaczona do tworzenia aplikacji w języku Java. Upraszcza ona proces projektowania trwałych i wydajnych systemów.
Termin „open source” oznacza, że kod źródłowy danego oprogramowania jest publicznie dostępny, umożliwiając użytkownikom jego swobodne przeglądanie, modyfikowanie i dystrybuowanie.
Struktura open source stanowi gotowy szablon, opracowany przez społeczność programistów, który służy jako fundament przy tworzeniu różnorodnych aplikacji. Wykorzystuje się rozmaite szablony w zależności od przeznaczenia, np. do budowy interfejsów użytkownika, stron internetowych czy podstawowych aplikacji.
Dla osób początkujących w świecie tworzenia aplikacji, Spring Framework może być doskonałym punktem startowym. Ten artykuł ma na celu wyjaśnić, czym jest ten framework i jak można z niego korzystać.
Czym jest Spring Framework?
Spring Framework to platforma open source, używana przez programistów do tworzenia aplikacji korporacyjnych w języku Java. Stworzony przez Roda Johnsona, został udostępniony w 2003 roku na licencji Apache 2.0.
Niektórzy programiści postrzegają Javę jako trudną i żmudną w kontekście budowy podstawowych aplikacji. Spring Framework ma na celu złagodzenie tych trudności i usprawnienie procesu tworzenia aplikacji korporacyjnych w Javie.
Spring jest bardzo rozbudowany. Dlatego warto najpierw zrozumieć, czym jest sam framework, zanim przejdzie się do jego bardziej specjalistycznych odmian, takich jak Spring Boot, Spring GraphQL czy Spring Cloud.
Dlaczego warto korzystać z Spring Framework?
- Elastyczność. Platforma ta oferuje szeroki wachlarz technologii, takich jak programowanie aspektowe (AOP), wstrzykiwanie zależności (DI) i obiekty POJO (Plain Old Java Objects). Dzięki temu Spring może być wykorzystywany do osiągania różnorodnych celów.
- Szybkość. Pomimo bogactwa funkcji, Spring Framework pozostaje lekki, co czyni go idealnym wyborem do budowy skalowalnych i niezawodnych aplikacji internetowych klasy enterprise.
- Rozbudowana społeczność. Spring może pochwalić się aktywną i zróżnicowaną społecznością, na której wsparcie zawsze można liczyć.
- Bezpieczeństwo. Spring jest znany ze swojego nacisku na bezpieczeństwo, a wszelkie luki są szybko usuwane poprzez regularne aktualizacje. Zależności od innych bibliotek są również monitorowane, by uniknąć potencjalnych problemów.
- Wydajność. Spring Framework znacznie usprawnia proces tworzenia aplikacji biznesowych w Javie.
Funkcjonalności Springa
Wsparcie dla programowania aspektowego
Programowanie zorientowane aspektowo (AOP) zwiększa modułowość, szczególnie w odniesieniu do problemów przekrojowych. AOP stanowi uzupełnienie programowania obiektowego.
Głównym elementem modułowości w AOP jest aspekt (problem przekrojowy). Umożliwia to programistom tworzenie deklaratywnych usług korporacyjnych oraz definiowanie własnych aspektów.
Kontener Inversion of Control (IoC)
Kontener IoC upraszcza zarządzanie i konfigurowanie obiektów Java. Zarządza on cyklem życia tych obiektów, co zwiększa elastyczność i rekonfigurowalność aplikacji opartych na Springu.
Inversion of Control wykorzystuje mechanizmy wyszukiwania lub wstrzykiwania zależności, aby w czasie wykonywania dostarczyć odniesienia do potrzebnych obiektów. Kontener IoC zawiera kod potrzebny do zarządzania konfiguracją.
Framework dostępu do danych
Spring ułatwia komunikację z bazami danych, bezpośrednio współpracując z Hibernate, JDBC i Java Persistence API (JPA), które są powszechnie używane w Javie. Platforma ta oferuje również funkcje takie jak obsługa zasobów, obsługa wyjątków i zarządzanie zasobami dla wszystkich obsługiwanych struktur dostępu do danych.
Spring MVC Framework
Programiści mogą tworzyć własne implementacje modelu MVC, dostosowane do ich potrzeb, przy użyciu tej platformy opartej na żądaniach.
Klasa DispatcherServlet, która odpowiada za obsługę żądań użytkowników i przekierowywanie ich do odpowiedniego kontrolera, stanowi centrum Spring MVC. Kontroler przetwarza żądanie, tworzy model i dostarcza informacje do użytkownika poprzez zdefiniowany widok.
Wiele frameworków testowych
Podczas tworzenia aplikacji w Springu, można je testować za pomocą obiektów Mock, Framework TestContext lub Spring MVC Test.
Obsługa języków
Spring Framework oferuje również wsparcie dla języków Groovy i Kotlin.
Architektura Springa
Spring Framework składa się z około 20 modułów. Elastyczność tego frameworka pozwala na wybór tylko tych modułów, które są potrzebne w danym projekcie. Moduły są pogrupowane w kategorie: Core Container, AOP, Data Access/Integration, Web, Instrumentation i Test.
Źródło obrazu: Spring.io
#1. Core Container
Core Container Spring Framework zawiera moduły Core, Beans, Context i Expression Language. Ich funkcje to:
- Moduł Core jest fundamentem frameworka, zawierającym funkcje IoC i wstrzykiwania zależności.
- Moduł Bean zawiera `BeanFactory`, wyrafinowaną implementację wzorca fabrycznego.
- Moduł Context bazuje na modułach Core i Bean, dziedzicząc ich funkcje, ale dodając do nich wsparcie dla internacjonalizacji.
- Moduł Expression Language udostępnia język wyrażeń do manipulowania obiektami i wykonywania zapytań w czasie wykonywania.
#2. Dostęp do danych/integracja
Warstwę dostępu i integracji danych tworzą moduły JDBC, ORM, OXM, JMS i Transaction. Ich funkcje obejmują:
- Moduł JDBC, który udostępnia warstwę abstrakcji JDBC, eliminując potrzebę żmudnego kodowania i analizowania błędów specyficznych dla konkretnych dostawców baz danych.
- ORM, warstwę integracyjną z popularnymi API mapowania obiektowo-relacyjnego, takimi jak JPA, JDO, Hibernate i iBatis.
- Moduł OXM, który obsługuje mapowanie Object/XML dla takich rozwiązań jak XStream, JAXB, JiBX, Castor i XMLBeans.
- Moduł Transaction, który oferuje deklaratywne i programowe zarządzanie transakcjami dla klas implementujących dedykowane interfejsy.
- Moduł JMS, który zawiera funkcje generowania i konsumowania komunikatów.
#3. AOP (Programowanie aspektowe) i oprzyrządowanie
Moduł AOP zawiera implementację programowania aspektowego zgodną z AOP Alliance, ułatwiając definiowanie aspektów, np. przechwytywanie wywołań metod. Moduł Instrumentation oferuje z kolei wsparcie dla ładowania klas i instrumentacji, szczególnie przydatne na niektórych serwerach aplikacji.
#4. Web
Moduły Web, Web-Servlet, Web-Struts i Web-Portlet tworzą warstwę Web.
- Moduł Web odpowiada za funkcje związane z integracją z internetem, w tym obsługę przesyłania plików wieloczęściowych.
- Moduł Web-Servlet zawiera implementację Spring MVC dla aplikacji internetowych.
- Moduł Web-Portlet odzwierciedla funkcjonalność Web-Servlet, oferując implementację MVC do wykorzystania w środowisku portletowym.
- Moduł Web-Socket obsługuje dwukierunkową komunikację między serwerem a klientem w aplikacjach internetowych.
#5. Test
Moduł Test wspiera testowanie komponentów Springa przy użyciu TestNG lub JUnit.
Instalacja Spring Framework
Sprawdzenie instalacji Javy
Przed rozpoczęciem korzystania z Spring Framework, należy go zainstalować na swoim komputerze. Dokumentacja Springa oferuje szczegółowe instrukcje instalacji w zależności od systemu operacyjnego.
W tym przykładzie użyjemy Ubuntu 20.04.5, systemu operacyjnego opartego na Linuksie.
Przed instalacją Springa, upewnij się, że masz zainstalowaną Javę. Możesz to sprawdzić za pomocą polecenia:
java -version
Jeśli Java jest zainstalowana, wynik będzie podobny do przedstawionego na zrzucie ekranu.
Jeśli Java nie jest zainstalowana, istnieje wiele sposobów jej instalacji, w zależności od potrzeb.
Instalacja Spring Framework
Dokumentacja Springa wskazuje na kilka podejść do instalacji frameworka.
W naszym przykładzie użyjemy GVM (Groovy Environment Manager). Możesz pobrać GVM za pomocą GVMtool lub zainstalować go za pomocą wiersza poleceń.
Po zainstalowaniu GVM, użyj następujących poleceń, aby zainstalować Spring i sprawdzić jego wersję:
gvm install springboot
spring --version
Jeśli instalacja Spring przebiegła pomyślnie, powinieneś otrzymać wynik podobny do tego:
Kluczowe pojęcia związane z Spring Framework
Wstrzykiwanie zależności
Wstrzykiwanie zależności (Dependency Injection, DI) pozwala programistom tworzyć obiekty niezależne od klasy, w której są używane. DI umożliwia również dostarczanie tych obiektów do klasy na różne sposoby.
Odwrócenie kontroli (IoC)
Odwrócenie kontroli (Inversion of Control, IoC) to koncepcja polegająca na przeniesieniu kontroli nad częściami programu lub obiektami do struktury lub kontenera. Tradycyjnie nasz kod wywołuje bibliotekę, natomiast w IoC to framework (w tym przypadku Spring) wywołuje nasz kod i kontroluje przepływ programu.
Programowanie zorientowane aspektowo (AOP)
Programowanie zorientowane aspektowo (Aspect-Oriented Programming, AOP) jest techniką, która pozwala na budowanie wspólnych i wielokrotnego użytku procedur, które mogą być stosowane w całej aplikacji. AOP oddziela powtarzalne zadania, takie jak walidacja danych, rejestrowanie i obsługa błędów, od głównej logiki aplikacji.
Materiały edukacyjne dotyczące Spring Framework
#1. Programowanie reaktywne w Spring Framework 5
Ten kurs Spring oferuje filmy, artykuły i materiały do pobrania. Uczy programowania funkcyjnego w Javie, mikrousług w Spring WebFlux i wykorzystania typów reaktywnych w Spring Data MongoDB.
#2. Mistrzowska klasa Spring Framework
Spring Framework Master Class to płatny kurs, który uczy praktycznego wykorzystania Spring Framework w projektach Java. Uczestnicy dowiedzą się, jak korzystać z narzędzi takich jak Spring Boot, JUnit & Mockito, Spring JDBC, Spring AOP i Hibernate.
#3. Spring Framework w prostych krokach
Spring Framework In Easy Steps to doskonały kurs premium dla osób chcących budować kompleksowe aplikacje internetowe Java EE za pomocą Spring Framework. Kurs omawia tworzenie aplikacji internetowych za pomocą Spring MVC, wykonywanie wywołań Ajax przy użyciu JQuery i Spring MVC oraz wykorzystanie Spring JDBC do operacji na bazach danych.
#4. Spring Framework 5
Kurs Spring Framework 5 jest idealny, jeśli chcesz opanować Spring Framework 5, Spring Data MongoDB, Spring Boot 2, Spring MVC, Spring Data JPA i Hibernate. Oferuje 57 godzin materiałów wideo na żądanie, 13 artykułów i szereg materiałów do pobrania.
Od autora
Java pozostaje jednym z najpopularniejszych języków programowania we współczesnym świecie. Pomimo pojawiania się nowych języków, frameworki takie jak Spring odświeżają Javę i zwiększają jej użyteczność. W związku z tym, zapotrzebowanie na inżynierów Java prawdopodobnie nie zniknie, gdyż są oni potrzebni zarówno do utrzymania starszego kodu, jak i do tworzenia nowych aplikacji.
Podsumowanie
Spring jest jednym z czołowych frameworków Java EE. Mamy nadzieję, że ten artykuł pomógł Ci zrozumieć, czym jest Spring Framework, jakie ma funkcje, jak jest zbudowany i jak działa. W połączeniu z innymi projektami Spring, ten framework oferuje programistom szeroki zakres narzędzi, które mogą być wykorzystane w różnych środowiskach programistycznych.
newsblog.pl