Spring podstawy.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Programowanie obiektowe
Klasy i obiekty.
Zaawansowane metody programowania – Wykład V
Static, const, volatile.
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Artur Jonak empolis Polska Sp. z o.o.
Programowanie obiektowe w Javie
Projektowanie Aplikacji Komputerowych
Architektura systemu Gra strategiczna „Strusia Jama”
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
Model – View - Controler
Tworzenie ASP.NET Web Form
Obiektowe metody projektowania systemów
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
C++ wykład 2 ( ) Klasy i obiekty.
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Platforma J2EE korporacyjny standard wytwarzania złożonych systemów informatycznych Autor: Jarosław Lis Warszawa, 2006r.
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE

Projektowanie warstwy serwera Programowanie aspektowe.
Hibernate relacje.
Wstęp do kontenerów IoC
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
»Spring Framework i nie tylko
Architektura Systemu MunSOL
Message-Driven Bean.
Transakcje zarządzane kontenerem
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Technologie tworzenia aplikacji internetowych Wykład 3
Programowanie obiektowe III rok EiT
Programowanie obiektowe – zastosowanie języka Java SE
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Programowanie obiektowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
Systemy zarządzania treścią Wykład 5
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Programowanie sieciowe w Javie
Programowanie w języku C++
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
Kurs języka C++ – wykład 5 ( )
Spring Framework, Spring Boot
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Model obiektowy bazy danych
Clustering Technologia klastrowa - architektura łącząca serwery i urządzenia pamięci masowych w celu zwiększenia niezawodności, bezpieczeństwa i wydajności.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Paweł Starzyk Obiektowe metody projektowania systemów
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Wzorce Projektowe w JAVA
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
PGO Interfejsy Michail Mokkas.
JavaBeans by Paweł Wąsala
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Spring podstawy

JavaBeen i wstrzykiwanie zależności Plan wykładu Co to jest Spring? JavaBeen i wstrzykiwanie zależności Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Historia Spring J2EE jest zbyt skomplikowane, encyjne EJB są przestarzałe, złożone, nadużywane i prawie zbędne, lepiej wykorzystywać interfejsy niż dziedziczenie, komponenty JavaBean doskonale się nadają do tworzenia aplikacji, paradygmat obiektowy jest ważniejszy niż implementacja, obsługiwane wyjątki są nadużywane w aplikacjach Java, kluczową rolę pełni możliwość niezależnego testowania poszczególnych modułów. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Co to jest Spring 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, moduły umożliwiające integrację z Toplink, Hibernate, JDO i iBATIS 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; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Architektura Spring (I) Spring jest uzupełnieniem serwerów aplikacji cały szkielet tworzony z perspektywy aplikacji a nie serwera Pełna modułowość szkieletu można wykorzystać dowolną część Spring niezależnie od pozostałych Wysoka konfigurowalność projektów Nie uzależniamy kodu aplikacji od naszego API Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Architektura Spring (II) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Składniki Spring (I) 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. SpringAOP moduł implementujący mechanizm AOP (Aspect-Oriented Programming) i zapewniający transakcyjność przetwarzania Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Składniki Spring (II) SpringDAO 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 module integracja z Jakarta Struts i dostarczanie kontekstu aplikacjom webowym SpringMVC framework implementacja MVC obsługująca szeroką gamę technologii Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Używamy POJO (plain old java object) Podstawowe założenia Używamy POJO (plain old java object) Framework dostarcza kontener dla obiektów Framework zarządza tworzeniem obiektów Większość naszego kodu "nie wie" o istnieniu kontenera Duża elastyczność i konfigurowalność (silny XML!) Integracja i unifikacja dostępu do zewnętrznych zasobów i technologii (np. Baz danych) Projektowanie i programowanie przez interfejsy Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Beany to dowolne obiekty zarządzane przez kontener Springa. Spring Bean Wszystko jest beanem! Beany to dowolne obiekty zarządzane przez kontener Springa. Beany nie muszą implementować żadnego interfejsu, ani rozszerzać żadnej klasy Beany zazwyczaj produkowane są przez fabrykę Springa. Beany definiujemy w kontekście aplikacji za pomocą XML lub properties, kodu Javy lub innych metod. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Każdy bean ma unikalny identyfikator i klasę. Deklaracja Bean Każdy bean ma unikalny identyfikator i klasę. Poniższa deklaracja XML definiuje najprostszy bean <bean id="prostyBean" class="spring.Bean" /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Atrybuty Bean Najważniejsze atrybuty beanow deklarowane w XMLu: id - identyfikator beana class - klasa beana abstract - czy jest to bean abstrakcyjny autoWire - autoinjectowanie singleton - czy bean jest singletonem parent - nadklasa beana init-method - metoda wywoływana przy inicjacji lazy-init - czy inicjacja ma być leniwa destroy-method - metoda wywoływana przy niszczeniu beana Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wstrzykiwanie zależności Użytkownik nie tworzy i nie łączy obiektów w aplikacji, lecz opisuje zależności między poszczególnymi klasami. Kontener jest w pełni odpowiedzialny za tworzenie obiektów i ich łączenie Metody implementacji wzorca IoC: obiekty implementują specjalny interfejs do wyszukiwania obiektów zależnych zależności są ustawiane w obiektach przez metody setter zależności są ustawiane w obiektach przez konstruktor Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wstrzykiwanie zależności przez settery (I) public class PrzykladowyBean { private FirstBean beanOne; private SecondBean beanTwo; private int i; public void setBeanOne(FirstBean beanOne) { this.beanOne = beanOne; } public void setBeanTwo(SecondBean beanTwo) { this.beanTwo = beanTwo; } public void setIntegerProperty(int i) { this.i = i;} } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wstrzykiwanie zależności przez settery (II) <bean id=" przykladowyBean" class=„przyklady. PrzykladowyBean"> <property name="beanOne” ref bean=”firstBean"/> </property> <property name="beanTwo" ref=”secondBean"/> <property name="integerProperty" value="1"/> </bean> <bean id=„firstBean" class=”przyklady.FirstBean"/> <bean id=„secondBean" class=”przyklady.SecondBean"/> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wstrzykiwanie zależności przez konstruktor (I) public class PrzykladowyBean { private FirstBean beanOne; private SecondBean beanTwo; private int i; public PrzykladowyBean( FirstBean firstBean, SecondBean secondBean, int i) { this.beanOne = firstBean; this.beanTwo = secondBean; this.i = i; } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wstrzykiwanie zależności przez konstruktor (II) <bean id=”przykladowyBean" class=„przyklady.PrzykladowyBean"> <constructor-arg> <ref bean=„firstBean"/> </constructor-arg> <constructor-arg ref=„secondBean"/> <constructor-arg type="int" value="1"/> </bean> <bean id=„firstBean" class=”przyklady.FirstBean"/> <bean id=„secondBean" class=”przyklady.SecondBean"/> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Inicjalizacja Bean <bean id="msg" class="spring.msg"> <property name="message" value="Hello" /> <property name="names"> <list> <value>Marek</value> <value>Anna</value> <value>Jan</value> <value>Ewa</value> </list> </property> <property name="number" value="13" /> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Inicjalizacja Bean - przykład (I) class Pokoj { String nazwa; String lokalizacja; .... } class Uzytkownik { String imie; Pokoj pokoj; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Inicjalizacja Bean - przykład (II) <beans> <bean id=„uzytkownikBean" class="spring.Uzytkownik"> <property name=„imie" value="Marek"/> <property name=„pokoj” ref bean=„pokojBean"/> </property> </bean> <bean id=„pokojBean" class="spring.Pokoj" > <property name=„nazwa" value=„27C"/> <property name=„lokalizacja" value=„B2"/> </beans> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Metoda inicjalizacyjna Istnieje możliwość wskazani własnych metod do inicjalizacji oraz destrukcji bean’a. public class Foo { private boolean initialized = false; public void init() { initialized = true; } <bean id="fu" class="Foo" init-method="init" /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Niszczenie Bean public class Foo { private boolean initialized = false; public void dest() { initialized = true; } <bean id="fu" class="Foo" destroy-method="dest" /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Fabryki komponentów (I) Podstawowa funkcjonalność Spring jest udostępniana przez pakiet org.springframework.beans. Pakiet zawiera infrastrukturę umożliwiającą wyszukiwanie i wiązanie komponentów JavaBean. BeanFactory to główna fabryka dostarczająca komponentów JavaBean i zarządzająca tworzeniem i wiązaniem komponentów, ApplicationContext to interfejs rozszerzający BeanFactory o obsługę komunikatów i internacjonalizacji, obsługę zdarzeń i możliwość rejestrowania nasłuchu zdarzeń Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Fabryki komponentów (II) Spring nie nakłada na klasy POJO żadnych dodatkowych wymagań dotyczących rozszerzanych klas lub implementowanych interfejsów Dwa tryby tworzenia komponentów: singleton: fabryka tworzy jedną instancję komponentu JavaBean o podanej nazwie, wszystkie żądania współdzielą jeden komponent, prototype: w odpowiedzi na każde żądanie fabryka tworzy nową instancję komponentu JavaBean. Fabryki dostarczają mechanizmu zarządzania cyklem życia komponentu, interfejsy InitializingBean i DisposableBean umożliwiają podejmowanie określonych akcji podczas tworzenia i niszczenia komponentu Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Fabryki komponentów (III) Sprawdzenie czy bean ma jakieś zależności. Jeśli ma to trzeba je stworzyć lub pobrać ich instancje, jeśli już zostały stworzone wcześniej. Wywołanie konstruktora lub statycznej metody z fabryki, aby dostać instancję. Ustawienie wartości pól poprzez setter – zgodnie z definicją w XMLu. Wywołanie metody inicjalizacyjnej (jeśli ją zdefiniowano). Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Zasięg Bean Singleton(domyślny) Jedna instancja na kontener Prototype Każde żądanie tworzy nową instancję Request Session Global Session <bean id="kontroler" class="Foo" scope="singleton" /> <bean id=„dao" class=„Bar" scope="prototype” /> <bean id="stan" class="Session" scope="session" /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

<bean lazy-init=’’true’’ ... /> Leniwa inicjalizacja Domyślnie Spring inicjuje wszystkie pola w momencie tworzenia obiektu. Można ustawić, żeby bean był inicjowany dopiero w momencie odwołania się do niego. <bean lazy-init=’’true’’ ... /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Przykładowy Bean dla kontrolera (I) <bean id="uzytkownikRekordController" class="controller.security.UzytkownikRekordController"> <property name="uzytkownikService" ref="uzytkownikService" /> <property name="urzadzenieService" ref="urzadzenieService”/> <property name="propertyEditorRegistrar" ref=”uzytkownikPropertyEditorRegistrar"/> <property name="pages"> <list> <value>uzytkownik00Dane</value> <value>uzytkownik01Lokalizacja</value> <value>uzytkownik02Sprzet</value> </list> </property> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Przykładowy Bean dla kontrolera (II) <property name="pageTitles"> <list> <value>Dane uzytkownika</value> <value>Lokalizacja</value> <value>Urzadzenia</value> </list> </property> <property name="validator"> <bean class="validator.UzytkownikValidator"> <property name="maxPasswordLength" value="15"></property> <property name="minPasswordLength" value="8"></property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Automatyczne wstrzykiwanie zależności @Autowired @Qualifier("uzytkownikDAO") private UzytkownikDAO uzytkownikDAO; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Deklarowanie obiektów domenowych <bean id="hibernateSessionFactory” ... <property name="packagesToScan"> <list> <value>domain</value> </list> </property> </bean> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Automatyczne tworzenie beanów @Repository(”uzytkownikDAO") public class UzytkownikDAOImpl @Service("uzytkownikService") public class UzytkownikServiceImpl @Controller @Scope("session") public class UzytkownikListController <context:component-scan base-package="dao" /> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego