Spring Framework - Google

Spring Framework

Z Wikipedii

Skocz do: nawigacji, szukaj

Spring jest szkieletem tworzenia aplikacji w języku Java dla platformy J2EE (jakkolwiek istnieje też wersja dla środowiska .NET).

Spring powstał na bazie kodu opublikowanego w książce Roda Johnsona Design and Development (ISBN 0-7645-4385-7). Pozytywny odzew czytelników sprawił, że był on dalej rozwijany przez autorów (m.in. Johnsona, Juergena Hoellera), którzy postanowili założyć firmę Interface21, świadczącą usługi konsultingowe związane z tym szablonem.

Pierwsze wydanie Springa pojawiło się w lipcu 2003 roku na bazie licencji "Apache 2.0 licence". Wersja 1.0 ukazała się w marcu 2004 roku.

Spring powstał jako alternatywa dla programowania aplikacji z użyciem Enterprise JavaBeans. Programowanie z użyciem EJB narzucało wiele innych ograniczeń - wymagając między innymi przyjęcie określonego modelu tworzenia oprogramowania. Funkcjonalność EJB okazała się także za "ciężka" do wszystkich zastosowań (w małych projektach wykorzystywano tylko niewielką część oferowanej przez EJB funkcjonalności - jednocześnie stworzenie małej aplikacji w środowisku EJB wymagało nakładu pracy jak przy aplikacji dużej). Odmienna koncepcja Springa - lekkiego szablonu, który nie wymusza specyficznego modelu programowania stała się bardzo popularna wśród programistów Javy. Spring oferuje dużą swobodę w tworzeniu rozwiązań a jednocześnie jest dobrze udokumentowany i zawiera rozwiązania wielu często występujących zagadnień w programowaniu.

Podczas gdy bazowe komponenty Springa mogą być używane praktycznie w każdej aplikacji istnieje w nim wiele rozszerzeń, które pozwalają budować aplikacje webowe na bazie J2EE.

Spis treści

[edytuj] Wprowadzenie do szablonu Spring

Szablon Spring zawiera rozwiązania dla wielu zagadnień technicznych napotykanych przez programistów języka Java oraz organizacje chcące budować aplikację na platformie J2EE. Wielość komponentów, które zawiera Spring powoduje, że czasami trudno je rozróżnić. Spring nie jest powiązany tylko i wyłącznie ze środowiskiem J2EE, jakkolwiek jego integracja w tym obszarze jest ważnym powodem jego popularności.

Spring jest prawdopodobnie znany najbardziej z oferowania cech, które pozwalają w łatwiejszy sposób tworzyć złożone systemy z pominięciem modeli programowania, które wymuszały historyczne rozwiązania. Oprócz tego jest ceniony za wypromowanie wcześniej niedocenianych funkcjonalności i wprowadzenie ich do powszechnie stosowanych praktyk.

[edytuj] Moduły szablonu Spring

Spring może być rozważany jako zbiór pomniejszych szablonów lub "szablon zbudowany z szablonów". Większość z tych szablonów została zaprojektowana aby pracować niezależnie, jakkolwiek użycie ich razem zapewnia większą funkcjonalność. Szablony te można podzielić ze względu na podstawowe komponenty:

  • Kontener IoC
  • Szablon programowania aspektowego
  • Szablon dostÄ™pu do danych
  • Szablon obsÅ‚ugi transakcji
  • Szablon Model-Widok-Kontroler
  • Szablon zdalnego dostÄ™pu
  • Szablon autoryzacji i autentykacji
  • Szablon zdalnego zarzÄ…dzania JMX
  • Szablon komunikatów JMS
  • Szablon wsparcia testowania

[edytuj] Odwrócenie sterowania - kontener IoC

Spring zapewnia bazowane na JavaBeansach zarządzanie konfiguracją, stosowanie zasad Odwrócenia sterowania (ang. Inversion-of-Control, IoC). Pozwala to na szybsze i prostsze składanie aplikacji. IoC, kojarzone jest także ze "Wstrzykiwaniem zależności" (ang. Dependency Injection), jakkolwiek to drugie jest pojęciem węższym.

Zasady IoC używane są w Springu jako technika, która pozwala przekazać na zewnątrz (ang. externalize) tworzenie i zarządzanie zależnościami pomiędzy komponentami programu - zależności konfigurowane są w pliku, a zarządzanie wykonywane jest przez kontener IoC.

Przykładowo: wykonanie pewnej operacji przez klasę Foo zależy od instancji klasy Bar. W tradycyjnym podejściu, klasa Foo musiałaby stworzyć instancję klasy Bar używając operatora new lub otrzymać taką instancję z klasy fabrykującej. W podejściu IoC, instancja klasy Bar dostarczana jest do Foo w czasie wykonania programu przez zewnętrzny proces (kontener wstrzykuje zależność do klasy Foo).

[edytuj] Szablon programowania aspektowego

Spring zapewnia wsparcie dla Programowania aspektowego (ang. Aspect Oriented Programming, AOP) zapewniające takie usługi jak zarządzanie transakcjami. AOP dostarcza możliwości zaimplementowania wspólnej logiki, która dotyka wielu miejsc w jednym miejscu i automatyczne jej dodawanie, tam gdzie jest potrzebna[1].

[edytuj] Szablon dostępu do danych

Warstwa abstrakcji JDBC, opakowuje standardowy mechanizm JDBC rzucając znaczące wyjątki zorganizowane w hierarchię (nie ma potrzeby wyciągania kodów dostawcy z wyjątku SQLException). Podejście to znacznie redukuje ilość kodu, którą musi napisać programista, aby obsłużyć błędy. Nie ma potrzeby pisania kolejnych bloków finally. Wyjątki związane z JDBC są zgodne z hierarchią wyjątków generycznego obiektu dostępu do danych (DAO) w Springu.

Ta sama warstwa abstrakcji pozwala integrować aplikację z Hibernate, Java Data Objects oraz mapami SQL iBATIS-a: w sensie uchwytów do zasobów, wsparcia dla obiektów dostępu do danych i strategii transakcji. Bardzo silne wsparcie dla Hibernate z mnóstwem udogodnień IoC, które wspomagają typowe zagadnienia integracji Hibernate z aplikacjami. Wszystkie one są zgodne z generycznymi hierarchiami wyjątków w transakcjach i DAO.

[edytuj] Szablon zarzÄ…dzania transakcjami

Spring zapewnia generyczną warstwę abstrakcji (ang. generic abstraction layer) dla zarządzania transakcjami. Pozwala na dołączanie własnych komponentów zarządzających transakcjami (ang. transaction manager) i łatwe odgraniczenie transakcji bez zagłębiania się w niskopoziomowe szczegóły.

Spring udostępnia generyczne strategie dla Java Transaction API (JTA) oraz pojedynczych źródeł (DataSource) Java Database Connectivity (JDBC). W odróżnieniu od czystego JTA lub EJB CMT wsparcie transakcji przez Springa nie wymaga uruchamiania środowiska Java EE (kontenera).

[edytuj] Szablon Model-Widok-Kontroler

Spring zapewnia elastyczny trójpowłokowy[2] szablon Model-Widok-Kontroler (MVC), zbudowany na bazowej funkcjonalności Springa. Programiści otrzymują wysoki stopień kontroli nad szablonem poprzez interfejsy strategii (strategy interfaces). Obsługuje on wiele technologii, w tym: strony JSP, FreeMarker, Velocity, Tiles, iText, Apache POI. Środkową powłokę można łatwo połączyć z powłoką innego szablonu MVC, w tym Apache Struts, WebWork albo Tapestry.

Problem z wzorcem projektowym MVC polega na stworzeniu przejrzystego szablonu dla stworzenia części Modelu (np. w Apache Struts). Możliwość współpracy Springa z takimi wzorcami oznacza, że programiści mogą szybko zrefaktorować (ang. refactoring) nieudaną implementację i używać springowej warstwy abstrakcji JDBC.

[edytuj] Przypisy

  1. ↑ AOP działa na zasadzie Dynamicznego Proxy (ang. Dynamic Proxy, dynamicznego - w sensie tworzenia go w czasie wykonania programu). Przykładowo, za pomocą AOP można do mutatorów (ang. setters, mutators) klasy DAO automatycznie dodać fragmenty kodu zarządzające transakcjami. AOP działa na zasadzie wzorca dekorator, który w tym przypadku dekoruje metody klasy dodatkowym kodem wykonywanym fabrykując proxy. Proxy to opakowuje istniejący obiekt DAO; wywołanie metod DAO przez stworzony AOP obiekt opakowujący wywołuje dodatkowo kod zarządzający transakcjami.
  2. ↑ Pojęcie powłoka (ang. tier) jest tu używane do rozróżnienia od pojęcia warstwa (ang. layer). W języku polskim przyjęło się mieszać te dwa pojęcia.

[edytuj] Linki zewnętrzne

[edytuj] Literatura

  • J2EE Development Without EJB, Rod Johnson, Jürgen Höller, Wiley, 2004, ISBN 0-7645-5831-5
  • Professional Java Development with the Spring Framework, Rod Johnson, Jürgen Höller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu, Wiley, 2005, ISBN 0-7645-7483-3

Niemcy pamiętają o "Solidarności"
W przyszłym roku, z okazji 20. rocznicy pierwszych wolnych wyborów w Polsce, w pobliżu Reichstagu w Berlinie zostanie odsłonięta tablica poświęcona "Solidarności". Ma to być jeden z pierwszych etapów poprawiania relacji polsko-niemieckich.
Wielka czaszka na Białym Domu
Do tej pory wsławili się rzutem martwym kotem w McDonaldzie i urządzeniem orgii w moskiewskim muzeum biologii. Teraz artystyczna grupa "Wojna" postanowiła zaistnieć w inny, niemniej spektakularny sposób.
Najstarsza rodzina brutalnie zamordowana
Najstarsza zidentyfikowana rodzina pochodząca z epoki kamienia została brutalnie zamordowana - wynika z analizy przeprowadzonej przez archeologów.
Włochy nie chcą cudzoziemców
Włoski minister spraw wewnętrznych Roberto Maroni, chce zamknięcia granic przed robotnikami spoza Unii Europejskiej. Głównym argumentem przemawiającym za tym pomysłem ma być, zdaniem Maroniego, konieczność pomocy cudzoziemcom przebywającym już na terenie Włoch. Granice Włoch dla obcokrajowców mają zostać zamknięte na dwa lata.
Bezdomny musi zapłacić 101 milionów
Bezdomny mężczyzna został skazany przez sąd w Los Angeles na karę więzienia za podpalenie lasu. Oprócz tego będzie go to sporo kosztować. Pożar wzniecony przez Stevena Butchera dwa lata temu, był piątym pod względem strat w historii Kalifornii.
Linki: Strona g³ówna