21. Wnioski
Podsumujmy to, co zostało przedstawione w niniejszym dokumencie:
- podstawy programowania internetowego w Javie z wykorzystaniem serwletów i stron JSP
- wprowadzenie do architektury MVC
- wprowadzenie do architektury trójwarstwowej
- wprowadzenie do Springa IoC
- przykłady ilustrujące te zagadnienia
Uważamy, że czytelnik, który dotarł do tego miejsca, jest gotowy do samodzielnego tworzenia własnych aplikacji internetowych w Javie. Jest również gotowy do zapoznania się z innymi metodami programowania zbliżonymi do tych omówionych w niniejszym dokumencie. Przypomnijmy architekturę aplikacji internetowych opracowanych w niniejszym dokumencie:
![]() |
W przypadku prostych aplikacji ta architektura jest wystarczająca. Po napisaniu kilku aplikacji tego typu można zauważyć, że serwlety z dwóch różnych aplikacji:
- mają ten sam mechanizm określania, którą metodę [doAction] należy wykonać, aby przetworzyć akcję żądaną przez użytkownika
- różnią się w rzeczywistości jedynie treścią tych metod [doAction]
W takiej sytuacji pojawia się silna pokusa, by:
- wyodrębnić przetwarzanie (1) do serwletu generycznego, który nie wie, w jakiej aplikacji jest używany
- przekazać przetwarzanie (2) klasom zewnętrznym, ponieważ serwlet generyczny nie wie, w jakiej aplikacji jest używany
- powiązać akcję żądaną przez użytkownika z klasą, która ma ją przetworzyć, za pomocą pliku konfiguracyjnego
Pojawiły się narzędzia, często nazywane „frameworkami”, które zapewniają programistom powyższe udogodnienia. Najstarszym i prawdopodobnie najbardziej znanym z nich jest Struts (http://struts.apache.org/). Jakarta Struts to projekt Apache Software Foundation (www.apache.org). Framework ten opisano na stronie (http://tahe.developpez.com/java/struts/).
Pojawił się niedawno framework Spring (http://www.springframework.org/), oferujący funkcje analogiczne do tych oferowanych przez Struts. W rzeczywistości jest to jego moduł Spring MVC. Jego zastosowanie zostało opisane w kilku artykułach (http://tahe.developpez.com/java/springmvc-part1/).
Spring nie ogranicza się wyłącznie do koncepcji warstwy MVC w aplikacji trójwarstwowej. Jest on przydatny nawet w aplikacjach spoza środowiska internetowego.
W ten sposób zakończyliśmy nasz kurs, wdrażając architekturę MVC w architekturze trójwarstwowej [web, metier, dao] na przykładzie prostego zarządzania listą osób.
![]() |
W wersji 1 aplikacji lista osób była przechowywana w pamięci i znikała po zamknięciu aplikacji internetowej. W pozostałych wersjach lista osób jest przechowywana w tabeli bazy danych. Wykorzystaliśmy cztery różne wersje SGBD: Firebird, Postgres, MySQL oraz SQL Server Express.
Dzięki Springowi warstwa z wersji 1 mogła zostać w całości zachowana w kolejnych wersjach. W ten sposób wykazaliśmy, że możliwe jest tworzenie architektur z niezależnymi warstwami.
W przypadku wersji wykorzystujących bazę danych wykazaliśmy wkład Springa w tworzenie warstw [dao] i [service]. Dzięki integracji Springa z iBATIS udało nam się stworzyć cztery wersje, które różnią się jedynie plikami konfiguracyjnymi. Ta sama klasa [DaoImplCommon] została wykorzystana do zaimplementowania warstwy [dao] we wszystkich czterech wersjach. Aby rozwiązać problem specyficzny dla Firebirda (SGBD), musieliśmy utworzyć pochodną tej klasy, ale nie wprowadzaliśmy w niej żadnych zmian.
Na koniec pokazaliśmy, w jaki sposób Spring pozwala nam zarządzać transakcjami w sposób deklaratywny na poziomie warstwy [service].
Zachęcamy czytelników do zapoznania się z pełnym zakresem funkcji oferowanych przez ten produkt.

