Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Spring podstawy.

Podobne prezentacje


Prezentacja na temat: "Spring podstawy."— Zapis prezentacji:

1 Spring podstawy

2 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

3 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

4 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

5 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

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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 <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

28 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

29 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

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

31 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

32 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


Pobierz ppt "Spring podstawy."

Podobne prezentacje


Reklamy Google