Spring framework framework

Transkrypt

Spring framework framework
Spring framework
Paweł Kędziora
Marek Lewandowski
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
1
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
2
Motywacje
• Po co komu framework?
– szybciej, taniej, lepiej.
• Po co komu kolejny framework?
– istniejące rozwiązania są zbyt proste (dużo dodatkowego
nakładu pracy programisty),
– istniejące rozwiązania zbyt skomplikowane (przerost formy
nad treścią).
Spring framework
3
2003 – Rod Johnson,
Johnson, Juergen Hoeller
Spring framework
4
Spring według Johnsona
• Zintegrowana platforma oferująca solidną
infrastrukturę dla podstawowych aspektów każdej
aplikacji
• Minimalizacja stopnia złożoności platformy
• Nieinwazyjność
• Prostota testowania
• Łatwość rozbudowy
Spring framework
5
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
6
Architektura Spring
Spring framework
7
Architektura - Core
• fundament framework’a
• implementuje IoC (Inversion of Control) poprzez
dependency injection
–
–
–
–
wzorzec projektowy
fabryka Bean (z wzorcem singleton)
dostępny w postaci samodzielnej biblioteki
udostępnia automatyczne dopasowywanie zależności
Spring framework
8
Architektura - Context
• warstwa ponad Core
• zapewnia dostęp do Bean w stylu przypominającym
JNDI
• walidacja
• wsparcie dla EJB
• wsparcie dla komunikatów (resource bundles, event –
propagation, resource – loading, servlet container)
Spring framework
9
Architektura - DAO
• abstrakcyjna warstwa JDBC
• wspiera programistę w procesie programowania
komunikacji z bazą danych i obsługi błędów
• wsparcie dla zarządzania transakcjami
Spring framework
10
Architektura - ORM
• zawiera warstwy wspierające popularne mapowania
obiektowo – relacyjne (JDO, Hibernate, iBatis)
• korzystanie z ORM umożliwia użycie mapowań w
połączeniu z innymi cechami oferowanymi przez
Spring (np. zarządzanie transakcjami)
Spring framework
11
Architektura - AOP
• AOP (Aspect Oriented Programing)
– aspekt - wydzielona funkcjonalnie część programu,
realizująca konkretne zadanie i koncentrująca się tylko na
problemie, którego dotyczy (np. logowanie, monitorowanie
aplikacji, zarządzanie transakcjami).
• AOP Alliance pozwalający definiować punkty złączeń
(join points), punkty przecięć (pointcuts),
przechwytywacze metod (method – interceptors)
Spring framework
12
Architektura - Web
• pakiet Web zawiera podstawowe cechy integracji
aplikacji zorientowanych na działanie w ramach sieci
WWW (web-oriented application context, servlet
listeners)
• pakiet integrowany z Struts lub WebWork
Spring framework
13
Architektura – Web MVC
• implementacja Model – View – Controller dla aplikacji
web.
• zapewnia oddzielenie interfejsu użytkownika od
warstwy logicznej aplikacji z zachowaniem
możliwości użycia pozostałych cech Spring
Framework (np. walidacji).
Spring framework
14
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
15
DAO - szczegóły
• DAO (Data Access Object) – ustandaryzowane
ułatwienie w pracy z technologiami takimi jak: JDBC,
Hibernate, JDO.
• przechwytywanie powstałych wyjątków niezależnie
od stosowanej technologii.
Spring framework
16
DAO - szczegóły
• manualna implementacja wzorca:
– implementacja fabryki obiektów DAO
– implementacja klasy przechwytującej wyjątki SQLException
– implementacja klas DAO
Spring framework
17
DAO - szczegóły
• DAO w Spring
– zbiór abstrakcyjnych klas zawierających mechanizmy
służące do wskazywania źródła danych oraz ustawienia
konfiguracyjne specyfikowane dla różnych technologii:
•
•
•
•
JdbcDaoSupport
HibernateDaoSupport
JdoDaoSupport
JpaDaoSupport (od Spring 2.0)
Spring framework
18
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
19
Dostęp do bazy danych
• Spring dostarcza abstrakcyjny framework JDBC
składający się z czterech pakietów:
– zawiera klasę JdbcTemplate, oraz
towarzyszące klasy i interfejsy,
– org.springframework.jdbc.datasource – zawiera klasy umożliwiające
łatwy dostęp do danych oraz uruchamianie kodu JDBC poza
kontenerem J2EE,
– org.springframework.jdbc.object – zawiera klasy reprezentujące
zapytania RDBMS,
– org.springframework.jdbc.support – zawiera m.in. tłumaczenia
– org.springframework.jdbc.core
SQLException.
Spring framework
20
JdbcTemplate
•
tworzy i zwalnia zasoby
•
zamyka połączenie z bazą danych
•
przechwytuje i przekazuje wyjątki SQLException
•
wykonuje polecenia: query, update, wywołuje procedury
składowane oraz tworzy zbiór wynikowy z iteratorem
•
programista koncentruje się na zamodelowaniu kodu
przygotowującego zapytanie oraz prezentującego wyniki
Spring framework
21
DataSource
•
działa jak „fabryka połączeń” (connection factory)
•
pozwala oddzielić kod odpowiedzialny za przygotowanie
połączenia i zarządzanie transakcjami od kodu aplikacji
•
dwa sposoby „podłączenia się” do źródła danych:
– JNDI
– użycie implementacji dostarczonej przez Spring
(np. DriverManagerDataSource):
Spring framework
22
SQLExceptionTranslator
•
interfejs, który może być zaimplementowany przez klasy
tłumaczące pomiędzy SQLException a
org.springframework.dao.DataAccessException.
•
domyślną implementacją jest SQLErrorCodeSQLExceptionTranslator, który
stosuje następujące reguły dopasowania:
–
użyj translacji zdefiniowanej przez programistę
–
dopasuj kod błędu (uzyskany z SQLErrorCodesFactory) i wyszukaj
odpowiedni komunikat metadanych bazy danych
– użyj translacji odwrotnej (fallback translation) – domyślnie
SQLStateSQLExceptionTranslator
Spring framework
23
Wykonywanie zapytań
•
zapytanie zwracające pojedynczą krotkę:
Spring framework
24
Wykonywanie zapytań
•
zapytanie zwracające zbiór krotek
Spring framework
25
Wykonywanie zapytań
•
modyfikacja danych:
Spring framework
26
Modelowanie JDBC - Java
• pakiet org.springframwork.jdbc.object zawiera klasy
umożliwiające zorientowany obiektowo dostęp do
bazy danych. Wynik wykonywanego zapytania jest
listą obiektów z kolumnami relacji mapowanymi na
właściwości obiektu.
• dostępne operacje: query, update, delete, insert.
Spring framework
27
MappingSqlQuery
Spring framework
28
SqlUpdate
Spring framework
29
StoredProcedure
Spring framework
30
SqlFunction
•
SqlFunction służy do obsługi zapytań zwracających jako wynik
pojedynczą krotkę
(np. „select user()” , „select sysdate from dual”):
Spring framework
31
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
32
Spring Web Framework
Charakterystyka
– Spring MVC
•
•
•
•
•
Własna implementacja wzorca MVC
Wygodne mapowanie i obsługa żądań
Pełne wsparcie dla formularzy
Możliwość integracji z wieloma technologiami budowania widoków
Biblioteki znaczników
– Wsparcie dla istniejących framework’ów
•
•
•
•
Struts
Tapestry
WebWork
JavaServerFaces..
Spring framework
33
Architektura Web MVC.
Spring framework
34
Architektura Web MVC
• Łańcuch filtrów
• Mapowanie żądań na dane kontrolery
• Warstwa obiektów
przechwytujących (ang.Interceptors)
• Kontrolery
• Obiektry wyboru widoku (ang. view resolvers)
Spring framework
35
Łańcuch filtrów(1)
• Filtry znajdują się „poza” Spring ApplicationContext
• Implementacja filtrów z wykorzystaniem obiektów
klasy DelegatingFilterProxy
• Konfiguracja DelegatingFilterProxy w web.xml
• Konfiguracja właściwego filtra w pliku
application-servlet.xml
Spring framework
36
Łańcuch filtrów (2)
•
Kofiguracja DelegatingFilterProxy (web.xml)
Spring framework
37
Łańcuch filtrów (3)
•
Konfiguracja Filtra jako spring-managed bean
Spring framework
38
Filtry – zastosowanie
• Logowanie i audytowanie
• Monitoring
• Filtry konwersji obrazów
• Filtry kompresji i kodowania danych
• Konwersje XSLT
• Inne..
Spring framework
39
Obiektry przechwytujące
Spring framework
40
Obiektry przechwytujące(2)
•
Implementacja metod:
preHandle()
wywołane przed akcją kontrolera
postHandle()
wywołane po akcji kontrolera, ale przed renderowaniem
widoku, dostęp do ModelAndView
afterCompletion()
wywołane po wyrendererowaniu widoku. Dostęp do
wyjątków występujących podczas przetwarzania żądania.
Spring framework
41
Obiektry przechwytujące(3)
Konfiguracja w application-servlet.xml
Spring framework
42
Kontrolery
• AbstractController
• CommandControllers
–
–
–
–
AbstractCommandController
AbstractFormController
SimpleFormController
AbstractWizardFormController
• MultiActionController
Spring framework
43
Spring MVC. Kontrolery(1)
• AbstractController
rozszerzana przez pozostałe kontrolery
czy wymaga sesji / czy synchronizować z sesją użytkownika
caching directive / mimetype setting
nadpisanie handleRequestInternal()
Spring framework
44
Spring MVC. Kontrolery(2)
• CommandControllers
AbstractCommandController
wiązanie parametrów żądania ze wskazanym obiektem
walidacja
brak obslugi formularzy.
AbstractFormController
obsluga formularzy
Command Object / walidacja pól
Obsługa błednie wysyłanych formularzy (resubmission)
Spring framework
45
CommandControllers c.d.
SimpleFormController
Command Object (formBackingObject())
nazwa widoku po przetworzeniu formularza (success).
walidacja
AbstractWizardFormController
lista widoków wchodzących w skład wizarda
status: finish, cancel, page_change
Przechodzenie pomiędzy widokami w wizardzie (nawet gdy
walidacja się nie powiodła – „dirty back”, „dirty forward”)
Zmiana kolejności stron / omijanie wybranych stron
bieżący widok zapisany w sesji
Spring framework
46
Kontrolery(4)
MultiActionController
grupowanie funkcjonalności w jednym kontrolerze
metody o formacie:
ModelAndView actionName(HttpServletRequest
request,HttpServletResponse response);
wywoływanie metod poprzez „rozwiązywanie” nazw:
ParameterMethodNameResolver (paramName)
http://.../index.view?testParam=testIt
InternalPathNameResolver
http://.../testing.view
PropertiesMethodNameResolver (definiujemy mapowanie)
http://.../test/welcome.html=doIt
Spring framework
47
Mapowanie żądań
• Umożliwia powiązanie przychodzących żądań z
odpowiednimi kontrolerami/obiektami
przechwytującymi.
• Uzyskanie nazwy przypisanego kontrolera, następnie
listy ewentualnych obiektów przechwytujących.
• Rodzaje mapowań kontrolerów:
– BeanNameUrlHandlerMapping
– SimpleUrlHandlerMapping
Spring framework
48
Obiekty wyboru widoków.
Odwzorowanie pomiędzy nazwami logicznymi
widoków a faktycznymi widokami.
– InternalResourceViewResolver (prefix, suffix)
– ResourceBundleViewResolver (plik .properties)
Widoki - wspierane technologie:
– JSP & JSTL, Velocity templates, JSF, XSLT, FreeMarker,
Tapestry
Spring framework
49
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
50
Spring 2.0
•
łatwiejsza konfiguracja
kontenera IoC
•
łatwiejsza konfiguracja AOP
•
wsparcie dla aspektów
@AspectJ
Spring framework
•
łatwiejsza konfiguracja
deklaratywnego zarządzania
transakcjami
•
wsparcie dla bean
napisanych w językach
innych niż Java
51
Plan prezentacji
• Motywacje
• Architektura Spring
– DAO,
– dostęp do bazy danych,
– Web MVC
• Spring 2.0
• Podsumowanie
Spring framework
52
Podsumowanie
•
bardzo dobry, kompleksowy framework do tworzenia aplikacji,
•
prosty do opanowania dla programistów znających technologię
•
implementuje sprawdzone wzorce projektowe (singleton, MVC,
DAO),
•
zintegrowany z narzędziami mapowania O/R,
•
wspiera programowanie aspektowe,
•
bardzo młoda technologia,
•
bardzo dobra pomoc (zarówno „oficjalna” dokumentacja jak i
„nieformalne” grupy użytkowników, blogi, fora dyskusyjne).
JavaBeans,
Spring framework
53
Dziękujemy za zapoznanie się z prezentacją!
Prosimy o zadawanie pytań