Kontener IoC Walk in the SPRING Co to jest SPRING?! O czym chcialbym jeszcze powidziec, a dzisiaj tego nie zrobie: DI, czyli Dependency Injection pakiety i interfejsy to ja mam wszedzie! Ruszmy ten kontener Framework, szkielet tworzenia aplikacji w JAVA (Istnieje rowniez wersja dla .NET). Moduły szablonu SPRING Kontener IoC
AoP
Dostep do danych (JDBC)
Obsluga transakcji (JTA, JDBC)
MVC (Model-View-Controler)
Autoryzacja i uwierzytelnianie
JMX (Zdalne zarzadzanie)
Komunikacja JMS
Obsluga testowania Kontener IoC IoC - Inversion of Control, czyli podejcie do programowania wykorzystujace DI (Dependency Injection), gdzie elementy odpowiedzialne za kontrole pewnych czynnosci (beany) zostaja przeniesione na zewnatrz i wstrzykiwane do klasy. DI jest procesem, w ktorym obiekty (beany) maja zdefiniowane zaleznosci z obiektami, z ktorymi maja wspolpracowac. Dependency Injection DI realizowane jest poprzez:
konstruktor
settery
Kontener wstrzykuje zaleznosci w momencie
powstawania beanow. http://www.springframework.net/ Podstawowymi pakietami dla IoC kontenera sa:
org.springframework.beans
org.springframework.context Interfejsy kontenera:
BeanFactory
ApplicationContext Kiedy BeanFactory a kiedy ApplicationContext? "Use an ApplicationContext unless you have a good reason for not doing so."
Spring API BeanFactory ApplicationContext Interfejs org.springframework.context.ApplicationContext reprezentuje kontener Spring IoC i jest odpowiedzialny za instancjonowanie, konfiguracje i wstrzykiwanie bean'ów. Sposoby konfiguracji bean'ow Plik XML
Adnotacje JAVA (Spring 2.5)
Kod JAVA (Spring 3.0) Przyklad pliku XML <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here -->
</beans> Tworzymy kontener ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"}); services.xml <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- services -->
<bean id="petStore"
class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
<property name="accountDao" ref="accountDao"/>
<property name="itemDao" ref="itemDao"/>
<!-- additional collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions for services go here -->
</beans> ApplicationContext (kontener) posiada rozbudowane moliwoci, które pozwalaj na wycignicie instancji beana z kontenera za pomoc jego nazwy i typu : // retrieve configured instance
PetStoreServiceImpl service = context.getBean("petStore", PetStoreServiceImpl.class);
// use configured instance
List userList service.getUsernameList(); Jas Fasola ?! Bean'y - kazda klasa JAVA moze byc beanem, ktory trafi do kontenera, bedzie przez niego instancjonowany i zarzadzany. Cykl zycia fasolki Dodajmy fasolke do xmla Niech sie dzieje magia Zakres/scope fasolki/bean'a Dwa podstawowe typy:
Singleton
Prototype Sa jeszcze inne cuda wianki Request - dla HTTP request, obowiazuje dla contextu zwiazanego z WEB, kazdy request ma wlasna instancje beana.
Session - dla HTTP sesji
Global-session - dla globalnej sesji HTTP, obowiazujacy zakres dla portletowych contextow. Jas Fasola moze miec rodzica?! And the winner is...czyli kto tu komu parentuje A co gdybym chcial cos jeszcze zrobic, zanim fasolka zostanie posadzona? Trzeba jeszcze skonfigurowac...
No i odpalic... Jak realizowany jest DI poprzez XML (settery i konstruktor)
Bean w beanie? Da sie wstrzyknac
W jaki sposob wstrzykiwac kolekcje
Autowiring (typy)
XML! A moze lepsze sa adnotacje?
To to mozna beany poprzez kod definiowac?!
Event Handling, czyli cos sie dzieje
Mozna tworzyc wlasne wydarzenia (Custom Events)
czy mozna odszukac beany danego typu i je wylapac.
zawezenie postprocess do konkretnego beana.
Clap Clap : )
Present Remotely
Send the link below via email or IM
Present to your audience
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in our knowledge base article
Spring
Spring