Skip to content

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:

  1. mają ten sam mechanizm określania, którą metodę [doAction] należy wykonać, aby przetworzyć akcję żądaną przez użytkownika
  2. 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.