Spring Framework - Podstawy

Spring Framework stanowi kluczowy komponent platformy Spring i dostarcza kompleksowy zestaw funkcjonalności, które tworzą mocny fundament dla rozwoju nowoczesnych aplikacji Java. Zawarte w nim rozwiązania są dostępne „out of the box”, co umożliwia deweloperom skupienie się na implementacji logiki biznesowej.

Dzięki Spring Framework, nie ma potrzeby manualnego zajmowania się tworzeniem podstawowych obiektów, mapowaniem danych, walidacją czy konstruowaniem systemów transakcyjnych. Framework oferuje bogaty zbiór narzędzi i funkcji, które ułatwiają i przyspieszają rozwój aplikacji.

Jakie funkcjonalności oferuje Spring Framework? Oto przegląd kluczowych rozwiązań i technologii (Core technologies):
  • Wstrzykiwanie zależności (DI)

    Dependency Injection jest prawdopodobnie najbardziej spektakularną funkcjonalnością jakiej doświadczamy stykając się po raz pierwszy ze Springiem. Pozwala ona na przekazanie Springowi odpowiedzialności za tworzenie obiektów oraz dostarczanie ich do konkretnych miejsc w aplikacji. Temat jest omawiany przez nas w rozdziałach: Wstrzykiwanie zależności: DI & IoC oraz Wstrzykiwanie: Qualifier & Bean.
  • Obsługa zdarzeń (Events)

    W ramach cyklu życia komponentów występuje szereg zdarzeń, o których wystąpieniu możemy zostać automatycznie powiadomieni. Co więcej, sami też możemy chcieć tworzyć własne (customowe) zdarzenia. Do takich zadań przyda się z pewnością mechanizm powiadamiania lub nasłuchiwania (np. za pomocą adnotacji @EventListener).
  • Zarządzanie zasobami (Resources)

    Interfejs Resource wraz ze swoimi wbudowanymi implementacjami takimi jak UrlResource, ClassPathResource, ByteArrayResource itp. dostarcza nam możliwość określenia typu zasobu jakiego chcemy używać, a interfejs ResourceLoader umożliwia nam łatwe stworzenie obiektu na podstawie takiego zasobu.
  • Lokalizacja językowa (i18n)

    Internacjonalizacja i lokalizacja językowa w Springu pozwala na przechowywanie w osobnych plikach kluczy z wartościami (np. językowymi), które dodatkowo można jeszcze parametryzować. Kluczowym interfejsem do realizacji takich zadań jest MessageResource, a jedną częściej używanych implementacji - ResourceBundleMessageSource.
  • Walidacja (Validation)

    Mechanizm oparty jest na interfejsie Validator i nadaje się do weryfikowania poprawności danych dostarczanych do beanów. Możemy w ten sposób tworzyć swoje implementacje walidacji dla konkretnych typów obiektów. Ogranicza nas wyobraźnia oraz...wymagania biznesowe.
  • Wiązanie danych (Data binding)

    Niezwykle istotny mechanizm, który odpowiada za wiązanie danych przetwarzanych przez framework z konkretnymi polami w konretnych typach obiektów. Na przykład gdy otrzymujemy dane w postaci żądania HTTP, to muszą one zostać zmapowane na odpowiednie pola w konkretnym obiekcie. Taką operację nazywamy bindowaniem. Bindowanie danych w kontekście metod HTTP opisujemy na podstawie konkretnych adnotacji w rozdziale: Spring MVC: Mapowanie requestów HTTP.
  • Konwersja typów (Type conversion)

    Czasem zwykłem bindowanie nie wystarca i potrzebujemy czegoś extra. Na przykład wtedy, gdy chcemy wykonać konwersję stringa do daty w określonym formacie i strefie czasowej (z zewnętrznego systemu otrzymujemy stringi, a w bazie chcemy zapisywać daty w konkretnym formacie i strefie). Wówczas przydatne staje się użycie interfejsu Converter oraz interfejsu ConverterFactory. Możemy w ten sposób stworzyć własnego konwertera i podpiąć go do platformy, tak by był automatycznie uruchamiany gdy tego potrzebujemy.
  • SpEL

    Spring Expression Language jest językiem wyrażeń wspierającym framework Springa w kontekście dostępu do obiektów i parsowania danych, np. w ramach zapytań.
  • AOP (Aspect Oriented Programming)

    Programowanie zorientowane aspektowo ma wielorakie znaczenie. Można to przedstawić jako sposób na dostarczenie konkretnego algorytmu do wykonania w wielu miejscach w kodzie projektu, poprzez zdefiniowanie go w jednym miejscu, wraz z określeniem miejsc w których ma się on wykonywać. Pojawia się tutaj pojęcie takie jak Aspect, a razem z nim punkt złączenia (Join point) i punkt przecięcia (Pointcut). Aspekty opisujemy szerzej w rozdziałach: Spring AOP - Podstawy oraz Spring AOP - AspectJ.
Rekomendacja
Warto poświęcić czas na zapoznanie się z każdym z wymienionych tematów. Szczególnie, jeśli jesteś nowy w świecie Springa, zalecamy skoncentrowanie się na początku na wstrzykiwaniu zależności (Dependency Injection, DI). Jest to kluczowy element frameworka, stanowiący fundament jego działania.
Praktyka


Wstrzykiwanie zależności jest techniką, którą stosujemy we wszystkich naszych kursach. Wykorzystujemy również obsługę zdarzeń, choć w ograniczonym zakresie, poprzez reagowanie na zdarzenie ApplicationReadyEvent za pomocą adnotacji @EventListener. Dodatkowo, w ramach kursu Kursu Aplikacji Web - Mega pakiet implementujemy aspekty do monitorowania i logowania czasów wykonania metod odpowiedzialnych za przetwarzanie logiki biznesowej.
Zdjęcie autora
Autor: Jarek Klimas
Data: 03 stycznia 2024
Labele: Backend, Podstawowy, Java
W tej strefie znajdziesz wszystko co niezbędne, aby komfortowo uczyć się Springa. Doskonale opisany kod nie zawiera zbędnych komplikacji, tylko samą esencję w postaci praktycznych przykładów. Tutaj odnajdziesz wszystko co jest istotne w danym temacie. Otrzymujesz pakiet złożony z kilku projektów wraz z obszernym wytłumaczeniem kodu.
Topowe Materiały
Spring IO: Spring Framework
Spring IO: Introduction to Spring Framework
Spring IO: Introduction to the Spring IoC Container and Beans
Spring IO: Spring Beans and dependency injection

Baeldung: Spring Framework Introduction
Baeldung: Intro to Inversion of Control
Baeldung: Spring Dependency Injection

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