Mateusz Mazurek – programista z pasją

Python, architektura, ciekawostki ze świata IT

Inżynieria oprogramowania Programowanie Programowanie webowe

Praca ze Springiem

Cześć!

Jak pewnie wiecie, aktywnym programistą Javy nie jestem już od jakiegoś czasu. Nie oznacza to że korzystam z niej czy czasem nie napiszę w niej czegoś, nie mniej jednak od 4 lat moim językiem wiodącym jest Python. 

Nie zmienia to faktu że te kilka lat temu miałem przyjemność pracować we, wspomnianym w tytule, Springu – i dziś, trochę z perspektywy czasu, kilka wspomnień i przemyśleń. 

Biblioteka vs framework

Nim przejdziemy sobie do własnych wniosków, dobrze by było najpierw wyjaśnić czym jest framework i czym różni się on od  biblioteki bo okazało się ostatnio, że sporo osób o tym nie wie.

Biblioteka jest wtedy kiedy to My wywołujemy jawnie jej kod. Framework jest wtedy kiedy to framework wywołuje nasz kod. Różnica którą przedstawiłem to tzn Inversion of Control – czyli odwrócone sterowanie. Przykładowo biblioteką będzie kod:

1
2
3
4
from library import Library

library_object = Library()
library_object.process(args)

a frameworkiem:

1
2
3
4
5
6
from framework import events

def event_hook(event)
    event.log.debug("Event %r !", event)

events.core.bind(events.STRANGE_EVENT, event_hook)

w pierwszym przykładzie jawnie wywołujemy kod biblioteki a w drugim “włączamy” nasz kod w ekosystem frameworka, co pozwala mu na użycie go, ale to od niego zależy kiedy to sie stanie. 

Spring Framework

Projekt ten jest już dość starym projektem, bo jego początki sięgają 2002 roku, kiedy to światło dzienne ujrzało jego pierwsze wydanie. W momencie pisania tego artykułu stabilną wersją jest wersja 5.1.6!

Architektura projektu jest modułowa i wygląda tak:

Moduł zawierający JDBC to moduł powalający na dostęp do danych i/lub ogólnie rozumianą integrację vis JMS (Java Message Service). Web to pakiet pozwalający na obsługę protokołów HTTP jak i protokołów w około niego.

To o czym warto wspomnieć, pisząc ten lekki artykuł to element Beans – bo to podstawa koncepcji całego frameworka. Jest on związany dość mocno z wstrzykiwaniem zależności i odwróconym sterowaniem (ang. Dependeny Injections, Inversion of Control) i definiuje się tym słowem obiekty które poddajemy procesom wstrzykiwania zależności. Prawie cała konfiguracja projektu opartego o Springa jest zasypana słowem „bean”.

Praca ze Springiem

Ze Springiem zetknąłem się na studiach i był to twór którego uruchomienie graniczyło z cudem. Dużo dziwnych błędów, nic nie chciało działać, każdy miał inne te błędy i ogólnie było z tym mnóstwo problemów. Krew, pot i łzy.

Dopiero w pracy udało mi się ogarnąć skąd te błędy i problemy powstawały i dopiero wtedy ten cały Spring zaczynał mieć jakiś większy sens. 

Sama praca z nim, wynikająca oczywiście trochę z architektury którą narzucał, była już bardzo przyjemna. Kiedyś nawet tu napisałem wpis na temat programowania aspektowego w Spring 4. Fajny temat. Ciekawy. 

Z perspektywy czasu

atrząc wstecz mogę stwierdzić, że, mimo ciężkich początków, Spring jest ogromnie fajnym i kompleksowym rozwiązaniem. Sam nie jestem ekspertem od Springa, żeby pisać tu coś więcej poza subiektywnym odczuciem, ale ostatnio, przy okazji współpracy z Przemkiem Bykowskim, zobaczyłem, że gość potrafi robić ze Springiem cuda! Dodatkowo widać, że robi to z pasją i zaangażowaniem, bo jego blog i kanał YouTube wręcz emanuje pozytywną energią. Dlatego odsyłam Cię do gościa, który w tym temacie poprowadzi Cię najlepiej. Poza tym Przemek właśnie uruchomił kompleksowy materiał, który ułatwia, świetnie przedstawia i pozwala uczyć się Springa skutecznie i efektywnie – tutaj zostawiam link.

Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments