Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWładysława Wyciszkiewicz Został zmieniony 10 lat temu
1
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki
2
Plan wykładu: Wzorzec MVC - wprowadzenie - przykład Wzorzec IoC
- Spring Framework - przykłady AOP (Aspect–Oriented Programming) - wprowadzenie - przykład Podsumowanie
3
Wzorzec projektowy MVC - Wprowadzanie
Model danych - opis struktur danych i powiązań Model Interfejs, czyli to co widzi użytkownik View Logika działania - powiązania między zachodzącymi zdarzeniami Controller
4
Schemat przykładowej aplikacji w architekturze MVC
5
Wzorzec projektowy MVC –Wady i zalety
Łatwa zmiana interfejsu użytkownika w istniejącej aplikacji Łatwość testowania logiki biznesowej Mnogość implementacji Większa złożoność projektu Wady Zmiany w interfejsach funkcyjnych modelu pociągają za sobą zmiany w View i Controller
6
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
7
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Aplikacja będzie składać się z dwóch stron. Formularza logowania i strony umożliwiającej dodawanie bądź usuwanie książek z bazy danych. Strona posłuży do pobrania hasła i loginu
8
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Strona dla Administratora - dodawanie książek - usuwanie książek
9
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Strona dla Użytkownika - dodawanie książek
10
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kod strony widoku używający znaczników JSF. - Wiązanie zmiennych LOGIN i PASS oraz akcji CHECKING
11
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Metoda CHECKING -Sprawdza czy użytkownik wprowadził poprawne dane. Jeśli tak zwracana jest ROLA
12
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - w zależności od zwróconej wcześniej wartości przez funkcję CHECKING przeniesie użytkownika na odpowiednią stronę.
13
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - Kod kontrolera zawierający przekierowania pokazane na poprzednim slajdzie. W przypadku framework’u JSF jest to plik XML
14
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
Kontroler - Wiązanie zmiennych #{bean.login}, #{bean.pass}, #{bean.chcecking} Zadaniem kontrolera jest powiązanie klasy Bean z pakietu jsf ze wskazanym kodem. login i pass są polami we wspomnianej klasie, natomiast checking jest wspomniana wcześniej metodą.
15
Wzorzec projektowy MVC – na przykładzie aplikacji JSF
16
Wzorzec projektowy Inversion of Controll - Wprowadzanie
Przeniesienie na zewnątrz komponentu np. obiektu odpowiedzialności za kontrolę wybranych czynności Termin często utożsamiany z wstrzykiwaniem zależności (ang. Dependency Injection, DI) Zasada Hollywood - „to nie Państwo dzwonią do nas lecz my dzwonimy do Państwa!”
17
Wzorzec projektowy Inversion of Controll – Metody implementacji
Typ 1. Obiekty implementują specjalny interfejs do wyszukiwania obiektów zależnych Typ 2. Zależności są ustawiane w obiektach za pomocą metody setter Typ 3. Zależności są ustawiane w obiektach za pomocą konstruktora
18
Wzorzec projektowy Inversion of Controll – Inne cechy
Lekki” „kontener Kontenery IoC często nazywane są „lekkimi” (ang. lightwight containers) z uwagi na ich rozmiar jak i narzut w czasie działania. Umożliwia uruchomienie kontener wewnątrz aplikacji lub innego kontenera „Black Box” Zastosowanie kontenerów jako tzn. „black box” tj. odseparowanie warstwy biznesowej od warstwy prezentacji w obrębie jednej maszyny wirtualnej
19
Wzorzec projektowy Inversion of Controll – Inne cechy
20
Wzorzec projektowy Inversion of Controll – Spring Framework 1/7
Uproszczenie aplikacji J2EE – eliminacja "martwego kodu" sklejającego poszczególne komponenty, – dostarczenie wydajnych mechanizmów IoC i AOP. Luźne wiązanie aplikacji ze szkieletem – kod aplikacji praktycznie uniezależniony od Spring API, – promowanie dobrych praktyk programowania obiektowego, – przekazanie logiki do POJO.
21
Wzorzec projektowy Inversion of Controll – Spring Framework 2/7
„Święta wojna” z encyjnymi komponentami EJB - Odpowiedź na trudności w implementacji komponentów encyjnych EJB Ułatwienie procesu testowania aplikacji – tworzenie aplikacji w oparciu o testy (TDD, test-driven development), – umożliwienie testowania obiektów biznesowych poza kontenerem.
22
Wzorzec projektowy Inversion of Controll – Spring Framework 3/7
Schemat architektury SPRING
23
Wzorzec projektowy Inversion of Controll – Spring Framework 4/7
Wsparcie dla istniejących technologii (Hibernate,SOAP,JMX,JMS, języki skryptowe,JSP/Servlet) Wsparcie dla AOP Możliwość pisania testów (Junit,TestNG) Wsparcie dla “annotations” Wsparcie dla modułów i hierarchia kontenerów Inne jęzki programowania i IoC
24
Wzorzec projektowy Inversion of Controll – Spring Framework 5/7
Wielowarstwowy szkielet aplikacji Java/J2EE zawierający: – lekki kontener umożliwiający scentralizowane zarządzanie i łączenie komponentów JavaBean i POJO, – warstwę zarządzania transakcjami, – warstwę obsługi JDBC wraz z hierarchią wyjątków, – moduły umożliwiające integrację z Toplink, Hibernate, JDO i iBATIS SQL Maps za pomocą standardowych DAO, – pełnowartościowe środowisko obsługujące paradygmat programowania aspektowego AOP, – elastyczne środowisko do tworzenia aplikacji internetowych zgodnie z modelem MVC umożliwiające integrację ze Struts, WebWork, Tapestry; Spring MVC wspiera także wiele technologii implementowania warstwy widoku, np. JSP, Velocity, Tiles.
25
Wzorzec projektowy Inversion of Controll – Spring Framework 6/7
Kontener Podstawowa część architektury, głównym składnikiem jest BeanFactory zapewniająca mechanizm IoC (Inversion of Control) Spring context Plik konfiguracyjny dostarczający opis środowiska: JNDI, EJB,wielojęzyczność, walidacja, itp. Spring AOP Moduł implementujący mechanizm AOP (Aspect-Oriented Programming) i zapewniający transakcyjność przetwarzania
26
Wzorzec projektowy Inversion of Controll – Spring Framework 7/7
Spring DAO Hierarchia wyjątków ujednolicająca kody błędów różnych baz danych Spring ORM Szablony ułatwiające korzystanie z narzędzi ORM Spring Web Integracja z Jakarta Struts i dostarczanie kontekstu aplikacjom webowym Spring Web Implementacja MVC obsługująca szeroką gamę technologii
27
Wzorzec projektowy Inversion of Controll – Przykład 1/2
28
Wzorzec projektowy Inversion of Controll – Przykład 2/2
29
Wzorzec projektowy IoC – przykłady implementacyjne
30
Wzorzec projektowy IoC – przykłady implementacyjne - Spring
Wykorzystanie Spring - Kod na kolejnym slajdzie prezentuje wykorzystanie wzorca IoC poprzez Spring IoC - Spring nie ogranicza się jednak tylko do IoC. Służy również często jako integrator wielu różnych bibliotek. Mamy tutaj pokazaną konfigurację źródła danych. - Źródło to jest następnie przekazywane do „integratora” napisanego dla biblioteki iBatis zajmującej się mapowaniem wyników zwróconych z bazy danych na klasy Javy. Na koniec integrator zostaje przekazany do fasady (ang. Facade) , która będzie udostępniać odpowiednie metody biznesowe operujące na bazie danych
31
Wzorzec projektowy IoC – przykłady implementacyjne - Spring
32
Wzorzec projektowy IoC – przykłady implementacyjne – Spring + JSF
Integracja Spring IoC z kontrolerem JSF - #{facade}
33
Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Adnotacje (Java 5.0) zamiast plików XML - Wymagany serwer aplikacja wspierający JEE 5.0 z kontenerem wspierającym servlety w wersji nie niższej niż 2.5
34
Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie.
35
Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie. - Serwer zarejestruje sobie pod nazwą „Pierwszy” tą implementację, którą będzie udostępniał później innym obiektom Javy.
36
Wzorzec projektowy IoC – przykłady implementacyjne - JEE
Wykorzystanie IoC w JEE - Tutaj mamy kod jaki należy dodać do np.: dowolnego „javovego” servletu lub beana JSF, aby móc korzystać ze zdefiniowanej przez nas fasady, która udostępnia metody operujące na bazie danych. - Serwer widząc szuka odpowiedniej implementacji interfejsu, bierze dodatkowo pod uwagę nazwę jaką wprowadziliśmy. W przypadku EJB 3.0 nie jest ona konieczna. Używa się jej tylko wówczas gdy mamy różne bean’y implementujące ten sam interfejs.
37
Podejście AOP (Aspect-Oriented Programing)
Metoda programowania mająca na celu modularyzację kodu i likwidację nakładających się problemów przekrojowych Aspekt Nazwany problem przekrojowy Rada Dodatkowe zachowanie/czynność które zostaje zainicjowane w punkcie złączenia Miejsce w strukturze wykonywania się aplikacji w którym powinna zostać zastosowana rada Punkt złączenia
38
Podejście AOP (Aspect-Oriented Programing) – rodzaje rad
Around advice Przed i po punkcie styku, możliwość przerwania przepływu kontroli przez zwrócenie własnej wartości lub wyjątku Before advice przed punktem styku, brak blokowania przepływu kontroli Throws advice W momencie zgłoszenia wyjątku Po poprawnym wykonaniu After advice
39
Podejście AOP (Aspect-Oriented Programing) – schemat
Programowanie aspektowe
40
Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 1/2
import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; public class TracingInterceptor { Logger logger = Logger.getLogger(TracingInterceptor.class.toString()); @AroundInvoke public Object trace(InvocationContext ctx) throws Exception { logger.info("Wykonuje metode biznesowa " + ctx.getTarget().getClass().getSimpleName() + "." + ctx.getMethod().getName()); return ctx.proceed(); } }
41
Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 2/2
import java.util.logging.Logger; import javax.ejb.Stateless; import javax.interceptor.Interceptors; import pl.jaceklaskowski.ejbws.interceptors.TracingInterceptor; public class MojPierwszyWsEJBBean implements MojPierwszyWsEJBLocal { Logger logger = Logger.getLogger(MojPierwszyWsEJBBean.class.toString()); public void metodaBiznesowa() { logger.info("Metoda biznesowa metodaBiznesowa wywolana poprawnie"); } } Wykonuje metode biznesow MojPierwszyWsEJBBean.metodaBiznesowa Metoda biznesowa metodaBiznesowa wywolana poprawnie
42
Dziękujemy za uwagę
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.