Spring Framework - Podstawowe funkcjonalności

Spring Framework to samo serce platformy Spring. Zawiera zbiór funkcjonalności, które stanowią bardzo solidny fundament dla wszystkich nowoczesnych aplikacji opartych o język Java. Wszystkie wymienione poniżej rozwiązania dostajemy out of the box, dzięki czemu my sami możemy się skupić na budowaniu kodu logiki biznesowej. Nie musimy specjalnie przejmować się tworzeniem kluczowych obiektów, mapowaniem danych, bądź też walidacją czy budowaniem systemów transakcyjnych. Po prostu korzystamy z dobrodziejstw frameworka.

Zatem jakie funkcjonalności dostajemy w ramach Spring Framework?
Przedstawiamy listę podstawowych rozwiązań (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 - podstawy oraz Wstrzykiwanie zależności - rozszerzenie.
  • 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 żądań HTTP (Request Mapping).
  • 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 - Podstawowe koncepcje oraz Spring AOP - AspectJ.
Nasza rekomendacja
Warto poświęcić chwilę na zaznajomienie się z każdym z wymienionych tematów, natomiast jeśli do tej pory nie programowaliście w Springu, to w pierwszej kolejności polecamy przyjrzenie się tematowi wstrzykiwania zależności (DI), gdyż jest to absolutna podstawa funkcjonowania frameworka.
Używamy w StartAPPa


Wstrzykiwanie zależności to rozwiązanie, którego używamy we wszystkich kursach. W każdym z nich wykorzystujemy również obsługę zdarzeń (choć w znikomym stopniu, poprzez nasłuchiwanie na event ApplicationReadyEvent, używając adnotacji @EventListener). Dodatkowo w każdym kursie wykorzystujemy również aspekty do logowania czasów wykonania wszystkich metod przetwarzających logikę biznesową.

W kursie Tabela Zaawansowana używamy adnotacji @Converter (Type conversion) w celu przekształcenia obiektu LocalDateTime na Timestamp i odwrotnie, w trakcie operacji transferowania danych pomiędzy encją a tabelą w bazie (ze względu na to, że baza h2 ma problem z poprawnym zapisywaniem danych z obiektu LocalDateTime).

W kursie Importer CSV oraz Importer XLS używamy natomiast interfejsu Validator oraz klasy ValidationUtils w celu weryfikacji poprawności danych w importowanych plikach csv i xls. W obu tych kursach wykorzystujemy również klasę ClassPathResource (zarządzanie zasobami plików).
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.
Linki
https://spring.io/projects/spring-framework

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 .