Spring framework 2.0. Roman Pichlík http://sweb.cz/pichlik/ CZJUG http://java.cz/jug



Podobné dokumenty
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

PA165: Úvod do Java EE. Petr Adámek

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

KIV/PIA 2013 Jan Tichava

Návrhové vzory Tvorba objektů

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

(Enterprise) JavaBeans. Lekce 7

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Co je nového v Java EE 6

Platformy / technologie. Jaroslav Žáček

Enterprise Java Beans 3.0

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Spring Framework Handout

Architektury informačních systémů

Architektury informačních systémů

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Technologie Java. Jaroslav Žáček

Spring portfolio. Tomáš Krátký

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Podpora aplikační logiky v J2EE aplikačních rámcích

Tvorba informačních systémů

Multiplatformní osobní organizér v jazyce Java

Využití EJB 3.0 při tvorbě podnikových aplikací

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

X33EJA Enterprise Java

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Komponentní technologie

Tvorba informačních systémů

Platformy / technologie. Jaroslav Žáček

JAVA. Aspekty (AOP) AspectJ

UJO Framework. revoluční architektura beans. verze

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Systém evidence knih v obecní

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

UNIVERZITA PARDUBICE

Architektura aplikace

Java a Caché IV: Manipulace s objekty

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Tvorba informačních systémů

MYBIZ - Řešení pro zpřístupnění dat ze stávajících aplikací na mobilních zařízeních (Mobilize your business!) Požadavky zákazníka.

Softwarové komponenty a Internet

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

JAVA Unit testing Java, zimní semestr

Server-side technologie pro webové aplikace

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Nové předměty z oblasti softwarového vývoje na FIM UHK

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Tvorba informačních systémů

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Technologie Java. Jaroslav Žáček

Web frameworks v praxi Tomáš Krátký

Web frameworks v praxi

JAVA EE ORGANIZÉR - SOFTWAROVÁ ARCHITEKTURA

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

Internetové technologie na platformě JAVA. Miroslav Hrúz

Ruby on Rails: zapomeňte na Javu

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Návrhové vzory OMO, LS 2014/2015

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

SOAP & REST služby. Rozdíly, architektury, použití

Jak správně na Hibernate. Martin Hlavatý

Správa a sledování SOA systémů v Oracle SOA Suite

Tvorba informačních systémů

Systémová administrace portálu Liferay

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Michal Krátký, Miroslav Beneš

Česká společnost uživatelů otevřených systémů EurOpen.CZ Czech Open System Users Group XXXI. konference.

Webové služby. Martin Sochor

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Převod LN aplikace do xpages

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Platforma průmyslové spolupráce

Tvorba informačních systémů

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Online galerie: využití J2EE s JPA Petr Bludský

KIV/PIA Semestrální práce

Úvod do Web Services

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Vývoj aplikací řízený testy. Miroslav Beneš

Michal Podzimek

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Web Services na SOAP

Apache Camel. Úvod do EIP a použití frameworku Apache Camel Prezentace pro CZJUG

Distribuované systémy a výpočty

Transkript:

Spring framework 2.0 Spring framework 2.0 Roman Pichlík http://sweb.cz/pichlik/

Nejdůležitejší slide http://springframework.org/ http://www.springframework.org/documen

Historie 2002 - Rod Johnson kniha Expert One-on-One J2EE Design and Development popularita zdrojových kódů (30,000 řádků kódu) 2003 založení open source projektu Spring Jürgen Höller, Yann Caroff 2004 Verze 1.0 2006 Verze 2.0

Základní myšlenky Zjednodušení komplexnosti J2EE (nejen) vývoje proč dělat jednoduché věci složitě a ty složité ještě složitější? neinvazivnost zaměření na architekturu aplikace nikoliv na použitou technologii jednoduchá testovatelnost modulárnost

Myšlenky řečí technologie Inversion Of Control Dependency injection Aspektově orientované programování (AOP) OOP přístup programování rozhraním Open-Closed princip otevřený pro rozšíření uzavřený pro modifikace POJO (Plain Old Java Objects) přístup old!= zastaralý ;-)

Myšlenky řečí technologie Pomoc při odstranění těsných programových vazeb jednotlivých POJO objektů a vrstev za pomoci návrhového vzoru Inversion of Control. Možnost volby implementace (EJB, POJO) business vrstvy pro aplikační architekturu a ne naopak (tedy aby architektura předepisovala implementaci). Řešení různých aplikačních domén bez nutnosti použití EJB, například transakční zpracování, podpora pro remoting business vrstvy formou webových služeb či RMI. Podpora implementace komponent pro přístup k datům, ať již formou přímého JDBC či ORM (object-relation mapping) technologií a nástrojů jako Hibernate, JPA, JDO Odstranění závislosti na roztroušených konfiguracích a pracného dohledávání jejich významu. Abstrakce vedoucí ke zjednodušenému používání dalších části J2EE, jako například JMS, JMX, JavaMail, JDBC, JCA nebo JNDI. Podpora tvorby a spouštění unit/integračních testů. Správa a konfigurační management business komponent.

Co je to vlastně Spring? Náhrada J2EE a především EJB? Sada modulů pro různé použití? Továrna na továrny? Webový framework? Sada pomocných API pro Hibernate? Přežitek v době EJB 3.0? Výstřelek zhýralých vývojářů?

Co je to vlastně Spring? Náhrada J2EE a především EJB? NE! Sada modulů pro různé použití? NE Továrna na továrny? NE Webový framework? NE Sada pomocných API pro Hibernate? NE Přežitek v době EJB 3.0? NE! Výstřelek zhýralých vývojářů? NE ;-)

Co je to vlastně Spring? komplexní technologie pro vývoj aplikací bez rozdílu zaměření Web, Enterprise, Desktop poskytovatel služeb transakce, AOP, konfigurace, remoting... jednotné rozhraní mezi aplikací a deploy prostředím aplikační server, webový kontejner zprostředkovatel mezi aplikací a technologiemi Hibernate, JMS, JSF, JPA, JDBC, EJB...

Základní stavební kameny Spring rovná se modulárnost použij co potřebuješ malá závislost na knihovnách třetích stran základní modul CORE volitelné JEE WEB AOP ORM DAO

Moduly

Moduly - popis CORE AOP DAO JEE WEB ORM IoC kontejner (register objektů, lifecycle management) AOP funkcionalita vrstva pro efektivní práci s JDBC integrace s J2EE (EJB, JMS, JCA) MVC a portlet implementace Integrace s web frameworky (Struts, JSF, Tapestry...) vrstva pro práci s ORM technologiemi

Příklady aplikací postavených na Springu

Příklady aplikací postavených na Springu

Příklady aplikací postavených na Springu

IoC kontejner Implementace návrhového vzoru IoC odstranění těsných vazeb mezi komponentami odstranění lookup kódu např. volání JNDI Řízení životního cyklu managovaných objektů Hollywod princip ( Nevolejte mi, ozvu se Vám! ) podobnost s EJB kontejnerem Konfigurace skrze metadata XML Anotace Properties

IoC kontejner

IoC kontejner Kontejner se startuje programově připravená startovací API pro různá prostředí WEB Servlet, Servlet Context Listener Junit Speciální TestCase z ruky XmlBeanFactory bf = new XmlBeanFactory("applicationContext.xml"); MyBusinessObject mbo = (MyBusinessObject) bf.getbean("examplebusinessobject");

IoC kontejner - objekty Managované objekty Spring je nazývá beany Neplést s EJB beanami nepotřebují žádné speciální rozhraní nepotřebují žádný marker prostě POJO Dependency injection realizace settery konstruktor

IoC kontejner - metadata Popisují vztahy mezi jednotlivými objekty Slouží kontejneru k instancování a sestavení objektů podle jejichvazeb Mohou mít různou podobu XML Anotace Properties Jakarta Commons attributes

IoC kontejner - overview POJO public class Foo { private Hoo hoo; private Bar bar; public void setbar(bar bar) public void sethoo(hoo hoo) } <?xml version="1.0" encoding="utf-8"?> <beans> <bean name="foo" class="cz.sweb.pichlik.samples.ioc.standard.foo"> <property name="hoo" ref="hoo"/> <property name="bar" ref="bar"/> </bean> <bean name="hoo" class="cz.sweb.pichlik.samples.ioc.standard.hoo" /> <bean name="bar" class="cz.sweb.pichlik.samples.ioc.standard.bar" /> </beans> Metadata Magie String path = FooTest.class.getResource("applicationContext.xml").getFile(); ApplicationContext context = new FileSystemXmlApplicationContext(path); Foo foo = (Foo) context.getbean("foo"); Použití

Spring IoC vs EJB 3.0 definice závislosti Spring IoC XML descriptor, anotace, properties, konfigurační java kód bez omezení EJB 3.0 IoC anotace, XML descriptor aplikovatelnost Servlet, listener classes, web services end-point, JAX-RPC handlers, DataSource, JMS, Mail, EJB, Environment entries, EntityManager, UserTransaction, EJB Beans, interceptors, web services end-point, DataSource, JMS, Mail, Environment entries, EntityManager, EJB Context, UserTransaction, TimerService nepřímé závislosti ano ne způsob nastavení setter, anotace proměnné, setter, anotace proměnné závislosti konstruktor extension pointy AOP, BeanPostProcessor, Factory, interceptory, lifecycle rozhrani lifecycle rozhrani, typová konverze autowiring typem, jménem ne Chudokrevné a plnokrevné IoC, EJB vs. Spring

Bean scopes Každý managovaný objekt (beana) má takazvaný scope Scope definuje životnost objektu z hlediska konverze kontejneru s klientem singleton prototype web scopes (request, session, global session) custom

Singleton scope

Prototype scope

Web + custom scope request, session, thread scope <bean name="shoppingcart" class="com.acme.shoppingcart" scope="session"> <aop:scoped-proxy/> </bean> singleton <bean name="ordercollector" class="com.acme.ordercollector"> <property name="shoppingcart" ref="shoppingcart"/> </bean> public class OrderCollector { private ShoppingCart shoppingcart; proxy objekt } public void processorder() { List<Item> items = shoppingcart.getitems();... } Všechny volání jdou na proxy, která získá objekt ze scope a deleguje volání

Metadata - anotace Projekt Spring Annotation @Bean(name="foo") public class Foo { @Property(bean="hoo") private Hoo hoo; @Property(bean="bar") private Bar bar; }

Metadata - anotace Subprojekt Spring configuration @Configuration public class ProgrammaticConfiguration { @Bean public Hoo hoo() { return new Hoo(); } @Bean public Bar bar() { return new Bar(); } } @Bean(scope = Scope.PROTOTYPE) public Foo foo() { Foo foo = new Foo(); foo.setbar(bar()); foo.sethoo(hoo()); return foo; }

Metadata - XML XML schema lepší podpora v nástrojích code completion Validace vhodnější pro rozšiřování nové XML tagy zpětná kompatibilita DTD je stále podporované

Metadata - XML Možnost rozšíření o nové tagy Schema Java code Registrace Standardní beany mají vlastní tagy Spring 1.x <bean id="simple" class="org.springframework.ejb.access.localstatelesssessionproxyfactorybean"> <property name="jndiname" value="ejb/rentalservicebean"/> <property name="businessinterface" value="com.foo.service.rentalservice"/> </bean> Spring 2.x <jee:local-slsb id="simpleslsb" jndi-name="ejb/rentalservicebean" business-interface="com.foo.service.rentalservice"/>

Spring AOP vlastní řešení V každé aplikaci máme kousky kódu, které se nám prolínají všemi vrstvami naší aplikace, ale do žádné nepatří konkrétně. Může se jednat o kus kódu pro logování-debug, bezpečnost, auditování, synchronizaci atd. Těmto kouskům kódu můžeme říkat aspekty. To co nám AOP nabízí je že můžeme tyto aspekty prolínat stávajícím kódem aniž bychom tento kód museli modifikovat. řeší 80% AOP požadavků AOP se používá na klíčové vlastnosti jako transakce

Spring AOP Integrace s AspectJ pointcat EL AspectJ definice možné sdílení aspektů Kombinace Spring AOP a AspectJ nezávisle na sobě

Další novinky Integrace JPA (součást Martinovi prezentace) Transaction demarcation via anotace Portlet MVC Podpora dynamických jazyků JRuby, Groovy, BeanShell Java 5 anotace generické typy a další...

Největší mýty o Springu Spring se nehodí pro Enterprise aplikace Spring nepoužívají velké firmy Spring nejde škálovat

Největší mýty o Springu Spring se nehodí pro Enterprise aplikace deset velkých bankovních institucí používá Spring pojištovny (Evropa, US) European Patent Office French Online Taxation System US, Canadian and Australian Government Agencies

Největší mýty o Springu Spring nepoužívají velké firmy Oracle BEA ebay CERN 1,1M stažení

Největší mýty o Springu Spring nejde škálovat kompletní řešení Open Terracotta http://www.terracotta.org/ Tangosol Coherence Data Grid http://www.tangosol.com/ Únorové CZJUG setkání Jonas Boner (Terracota) Using AOP to Cluster the JVM http://java.cz/detail.do?articleid=2624

Spring vs EJB 3.0 Proč používat Spring v době EJB 3.0. IoC kdekoliv transparentní transakce snadná testovatelnost stále se vyvíjí nezávislost na AS open source se vším všudy nevyžaduje Javu 5 built in AOP proxy based weaving

Zajímavé subprojekty Spring Web Flow Spring Security (Acegi Security) Spring Rich Client Spring IDE for Eclipse Spring BeanDoc Spring OSGi Spring JavaConfig Spring.NET

Q&A čas na Vaše otázky šetřete mě ;-)???

The end Děkuji za pozornost!