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ń