Návrhové vzory Tvorba objektů

Podobné dokumenty
Spring framework 2.0. Roman Pichlík CZJUG

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

(Enterprise) JavaBeans. Lekce 7

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Architektury informačních systémů

Architektury informačních systémů

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

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

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

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

Spring Framework Handout

Tvorba informačních systémů

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

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Tvorba informačních systémů

Softwarové komponenty a Internet

Základy objektové orientace I. Únor 2010

Enterprise Java Beans 3.0

KIV/PIA 2013 Jan Tichava

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

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

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

UJO Framework. revoluční architektura beans. verze

Vývoj informačních systémů. Přehled témat a úkolů

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

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

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

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

Řízení reálných projektů, agilní metodiky

Úvod do problematiky vývoje Vývoj informačních systémů

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Vývoj informačních systémů. Přehled témat a úkolů

1. Dědičnost a polymorfismus

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

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

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

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Objektové programování

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Tvorba informačních systémů

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

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

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

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

Elektronická podpora výuky předmětu Komprese dat

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

Návrhové vzory OMO, LS 2014/2015

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

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

Architektura softwarových systémů

Obsah. Zpracoval:

Technologie JavaBeans

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

1. Programování proti rozhraní

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

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

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

JAVA Unit testing Java, zimní semestr

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Dědění, polymorfismus

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

Výčtový typ strana 67

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Teoretické minimum z PJV

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Tvorba informačních systémů

8 Třídy, objekty, metody, předávání argumentů metod

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký, Miroslav Beneš

TÉMATICKÝ OKRUH Softwarové inženýrství

Programování II. Modularita 2017/18

MVC (Model-View-Controller)

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Architektura softwarových systémů

typová konverze typová inference

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Programování II. Návrh programu I 2018/19

20. Projekt Domácí mediotéka

24. listopadu 2013, Brno Připravil: David Procházka

RMI Remote Method Invocation

Programování v C++ 3, 3. cvičení

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Analýza a Návrh. Analýza

Programování v Javě I. Leden 2008

Tvorba informačních systémů

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu


9. Polymorfismus a rozhraní

Platformy / technologie. Jaroslav Žáček

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

Problémové domény a jejich charakteristiky

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Spring portfolio. Tomáš Krátký

Transkript:

Objektové modelování, AD7B36OMO Návrhové vzory Tvorba objektů ČÁST B Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze https://edux.feld.cvut.cz/courses/ad7b36omo Přednáška je vytvořena na základě původních přednášek autorů: Karel Richta;Pavel Strnad, 2014

VZOR: BUILDER DEKLARACE ZÁMĚRU: ODDĚLENÍ KONSTRUKCE SLOŽITÉHO OBJEKTU OD JEHO REPREZENTACE POKUD MÁ BÝT ALGORITMUS PRO VYTVÁŘENÍ SLOŽITÉHO OBJEKTU NEZÁVISLÝ NA VYTVÁŘENÍ ČÁSTÍ POKUD LZE OBJEKT REPREZENTOVAT RŮZNÝMI ZPŮSOBY MOTIVAČNÍ PŘÍKLAD: EDITOR DOKUMENTU V RTF BY MĚL UMĚT PRACOVAT S RŮZNÝMI REPREZENTACEMI TEXTU (ASCII, TEX, )

STRUKTURA VZORU BUILDER Obrázek převzat z [GoF]

PŘÍKLAD: STAVBA DOMU BUDOVA Zdroj: http://voho.cz/wiki/informatika/oop/navrhovy-vzor/buil ZAČNEME JEDNODUCHOU TŘÍDOU PŘEDSTAVUJÍCÍ BUDOVU. der/ BUDE MÍT TŘI ATRIBUTY: PODLAHU (FLOOR), ZDI (WALLS) A STŘECHU (ROOF). BUDOVA BUDE NAŠÍM PRODUKTEM. RŮZNÉ BUDOVY SE OD SEBE BUDOU LIŠIT PODLAHOU, ZDMI A STŘECHOU. DŮLEŽITÉ JE, ŽE KLIENT O POSTAVENÍ BUDOVY POŽÁDÁ ŘÍDÍCÍ OBJEKT (STAVBYVEDOUCÍHO) A O PROCES JEJÍHO VYSTAVĚNÍ SE NESTARÁ. public class Building { private String floor; private String walls; private String roof; public void setfloor(final String pfloor) { this.floor = pfloor; } public void setwalls(final String pwall) { this.walls = pwall; } public void setroof(final String proof) { this.roof = proof; } public void print() { System.out.println(String.format("%s, %s, %s", this.floor, this.walls, this.roof)); } }

PŘÍKLAD: STAVBA DOMU (POKR.) ROZHRANÍ STAVITELE STAVITELÉ V NAŠEM PŘÍKLADU BUDOU MÍT NĚKOLIK SPOLEČNÝCH METOD, A TO NA ZAHÁJENÍ NOVÉ STAVBY, POLOŽENÍ PODLAHY, STAVBU ZDÍ, STAVBU STŘECHY A ZÍSKÁNÍ VÝSLEDNÉ BUDOVY. PROTO VYTVOŘÍME ROZHRANÍ, KTERÉ BUDOU VŠICHNI STAVITELÉ IMPLEMENTOVAT. public interface Builder { void startnew(); /* Zahájí novou stavbu. */ void buildfloor(); /* Položí podlahu. */ void buildwalls(); /* Postaví zdi. */ void buildroof(); /* Postaví střechu. */ Building getresult(); /* Vrátí výslednou budovu. */ }

PŘÍKLAD: STAVBA DOMU (POKR.) STAVITELÉ PRO NÁŠ PŘÍKLAD VYTVOŘÍME DVĚ RŮZNÉ IMPLEMENTACE STAVITELŮ: JEDEN BUDE STAVĚT BUDOVY LEVNÉ, DRUHÝ LUXUSNÍ. KLIENT SI PAK JEDNOHO Z NICH VYBERE A TUTO VOLBU SDĚLÍ STAVBYVEDOUCÍMU. OBA STAVITELÉ BUDOU V NAŠEM PŘÍPADĚ VÝKONNÝMI OBJEKTY, PROTOŽE ZAJIŠŤUJÍ KONKRÉTNÍ ÚKONY PŘI STAVBĚ. public class CheapBuilder implements Builder { private Building result; public void startnew() { this.result = new Building(); } public void buildfloor() { this.result.setfloor("laminate floor"); } public void buildwalls() { this.result.setwalls("panel walls"); } public void buildroof() { this.result.setroof("wooden roof"); } public Building getresult() { return this.result; } }

PŘÍKLAD: STAVBA DOMU (POKR.) STAVITELÉ - POKRAČOVÁNÍ public class LuxuryBuilder implements Builder { private Building result; public void startnew() { this.result = new Building(); } public void buildfloor() { this.result.setfloor("wooden floor"); } public void buildwalls() { this.result.setwalls("brick walls"); } public void buildroof() { this.result.setroof("shindel roof"); } public Building getresult() { return this.result; } }

PŘÍKLAD: STAVBA DOMU (POKR.) STAVBYVEDOUCÍ V ROLI ŘÍDÍCÍHO OBJEKTU ZDE BUDE VYSTUPOVAT STAVBYVEDOUCÍ. TEN DOSTANE K DISPOZICI STAVITELE (BUILDER), S JEHOŽ POMOCÍ BUDOVU POSTUPNĚ VYSTAVÍ. ZAČNE PODLAHOU, POKRAČUJE STĚNAMI A NAKONEC POSTAVÍ STŘECHU. PO DOKONČENÍ VŠECH OPERACÍ VRÁTÍ KLIENTOVI VÝSLEDNOU BUDOVU. public class Director { /* Postaví budovu s použitím zadaného stavitele (parametr builder), vrátí výslednou budovu */ public Building build(final Builder builder) { builder.startnew(); // zahájit stavbu nové budovy builder.buildfloor(); // položit podlahu builder.buildwalls(); // postavit zdi builder.buildroof(); // postavit střechu return builder.getresult(); // vrátit výsledek } }

PŘÍKLAD: STAVBA DOMU (POKR.) TESTER VZOR POUŽITÍ final Director director = new Director(); // levná budova final Building cheapbuilding = director.build(new CheapBuilder()); cheapbuilding.print(); // luxusní budova final Building luxurybuilding = director.build(new LuxuryBuilder()); luxurybuilding.print();

PŘÍKLAD POUŽITÍ VZORU BUILDER Obrázek převzat z [GoF]

PARTICIPANTI BUILDER (TEXTCONVERTER) SPECIFIKUJE ABSTRAKTNÍ INTERFACE PRO VYTVÁŘENÍ ČÁSTÍ OBJEKTŮ TYPU PRODUCT. CONCRETEBUILDER (ASCIICONVERTER, TEXCONVERTER, TEXTWIDGETCONVERTER) KONTRUUJE A SESTAVUJE ČÁSTI - IMPLEMENTUJE INTERFACE TŘÍDY BUILDER UDRŽUJE SI VYTVOŘENOU REPREZENTACI POSKYTUJE SLUŽBY PRO VYZVEDNUTÍ PRODUKTU (GETASCIITEXT, GETTEXTWIDGET,...)

PARTICIPANTI (POKRAČ.) DIRECTOR (RTFREADER) KONSTRUUJE OBJEKTY POMOCÍ SLUŽEB TŘÍDY BUILDER PRODUCT (ASCIITEXT, TEXTEXT, TEXTWIDGET) REPREZENTUJE SLOŽITÝ OBJEKT, KTERÝ JE KONSTRUOVÁN, TŘÍDA CONCRETEBUILDER VYTVÁŘÍ KONKRÉTNÍ VNITŘNÍ REPREZENTACI ZAHRNUJE TŘÍDY PRO DEFINICI ČÁSTÍ A SLUŽBY PRO KONSTRUKCI CELKU

SPOLUPRÁCE OBJEKTŮ PŘI POUŽITÍ BUILDER Obrázek převzat z [GoF]

BUILDER KDY POUŽÍT POKUD SE VYSKYTUJE KONSTRUKTOR S MNOHA VOLITENÝMI PARAMETRY POKUD KÓD PRODUKUJE RŮZNÉ REPREZENTACE JEDNOHO PRODUKTU STEJNÉ KROKY VEDOUCÍ K CÍLI, KTERÉ SE LIŠÍ V DETAILU KDYŽ PRACUJEME SE KOMPOZITNÍMI STROMOVÝMI STRUKTURAMI VÝHODY UMOŽŇUJE POSTAVIT PRODUKT KROK PO KROKU UMOŽNÍ STEJNÉMU KÓDU POSTAVIT ROZDÍLNÉ PRODUKTY IZOLUJE SLOŽITÝ KÓD PRO VYTVÁŘENÍ OD BUSINESS LOGIKY PRODUKTU NEVÝHODY ZVYŠUJE ČLENITOST ŘEŠENÍ DALŠÍMI TŘÍDAMI

INVERSION OF CONTROL (IOC) NÁVRHOVÝ PRINCIP, VE KTERÉM KÓD PROGRAMU JE ŘÍZENÝ Z OBECNÉHO FRAMEWORKU JEDNÁ SE INVERZNÍ PŘÍSTUP OPROTI PŮVODNÍMU PŘÍSTUPU PŮVODNÍ KLASICKÝ PŘÍSTUP - PROGRAMOVÝ KÓD VOLÁ ZNOVUPOUŽITELNÉ KNIHOVNY STARAJÍCÍ SE O OBECNÉ ÚLOHY IOC OBECNÝ FRAMEWORK ŘÍDÍ CHOD PROGRAMU A VOLÁ SPECIFICKY VYTVOŘENÝ KÓD PRO ŘEŠENÍ KONKTRÉTNÍCH ÚLOH

DEPENDENCY INJECTION (VKLÁDÁNÍ ZÁVISLOSTÍ) SPECIÁLNÍ PŘÍPAD IOC DEFINICE WIKIPEDIA: VKLÁDÁNÍ ZÁVISLOSTÍ (ANGLICKY DEPENDENCY INJECTION (DI)) JE V OBJEKTOVĚ ORIENTOVANÉM PROGRAMOVÁNÍ TECHNIKA PRO VKLÁDÁNÍ ZÁVISLOSTÍ MEZI JEDNOTLIVÝMI KOMPONENTAMI PROGRAMU TAK, ABY JEDNA KOMPONENTA MOHLA POUŽÍVAT DRUHOU, ANIŽ BY NA NI MĚLA V DOBĚ SESTAVOVÁNÍ PROGRAMU REFERENCI. DEPENDENCY INJECTION LZE CHÁPAT JAKO NOVĚJŠÍ NÁZEV PRO INVERSION OF CONTROL (IOC), ALE V UŽŠÍM VÝZNAMU. JEDNÁ SE O KONKRÉTNÍ TECHNIKU IOC. MARTIN FOWLER, HTTP://WWW.MARTINFOWLER.COM/ARTICLES/INJECTION.HTML

PRINCIP DEPENDENCE INJECTION POKUD CHCE NÁŠ OBJEKT POUŽÍVAT SLUŽBY JINÉHO OBJEKTU BEZ POUŽITÍ DI, PAK ZODPOVÍDÁ ZA CELÝ JEHO ŽIVOTNÍ CYKLUS, TEDY INICIALIZACI APOD. PŘI APLIKACI DI JE ALE NÁŠ OBJEKT ODSTÍNĚN OD TÉTO SPRÁVY, TU ZAŘIZUJE DEPENDENC PROVIDER. NÁŠ OBJEKT TEDY POTŘEBUJE UŽ JEN REFERENCI NA DEPENDENCE PROVIDERA. DI ZAHRNUJE NEJMÉNĚ TŘI OBJEKTY, KTERÉ SPOLU MUSÍ SPOLUPRACOVAT. KONZUMENT, TEDY OBJEKT POŽADUJÍCÍ SLUŽBY. POSKYTOVATEL SLUŽBY - POSKYTOVATELE TĚCHTO SLUŽEBMU DODÁ DI PROVIDER DI PROVIDER ZODPOVÍDÁ ZA CELÝ ŽIVOTNÍ CYKLUS POSKYTOVATELE. DI PROVIDER MŮŽE BÝT IMPLEMENTOVÁN NĚKOLIKA ZPŮSOBY, NAPŘ. JAKO LOKÁTOR SLUŽEB, ABSTRAKTNÍ TOVÁRNA, TOVÁRNÍ METODA, NEBO POMOCÍ NĚJAKÉHO Z ŘADY Z FRAMEWORKŮ, NAPŘÍKLAD SPRING NEBO CDI.

ZPŮSOBY VKLÁDÁNÍ MARTIN FOWLER POUKAZUJE NA TŘI RŮZNÉ VZORY, JAK LZE OBJEKTU PŘIDAT EXTERNÍ REFERENCI JINÉHO OBJEKTU. VKLÁDÁNÍ ROZHRANÍM - EXTERNÍ MODUL, KTERÝ JE DO OBJEKTU PŘIDÁN, IMPLEMENTUJE ROZHRANÍ, JEŽ OBJEKT OČEKÁVÁ V DOBĚ SESTAVENÍ PROGRAMU. VKLÁDÁNÍ SETTER METODOU - OBJEKT MÁ SETTER METODU, POMOCÍ NÍŽ LZE ZÁVISLOST INJEKTOVAT. INJEKCE KONSTRUKTOREM - ZÁVISLOST JE DO OBJEKTU INJEKTOVÁNA V PARAMETRU KONSTRUKTORU JIŽ PŘI JEHO ZRODU.

VÝHODY A NEVÝHODY DI VÝHODY PROVIDER MŮŽE POSKYTOVAT ŘADU KOMPONENT K POUŽITÍ BEZ ZÁSAHU DO KÓDU PROGRAMU O PŘETYPOVÁVÁNÍ SE STARÁ IOC KONTEJNER ZÁVISLOSTI KOMPONENT JSOU DEFINOVÁNY EXPLICITNĚ, TEDY JEDNODUŠŠÍ ORIENTACE V ZÁVISLOSTECH IOC KONTEJNER LZE VE VĚTŠINĚ PŘÍPADŮ KONFIGUROVAT MIMO KÓD, JEDNOTLIVÉ KOMPONENTY JE MOŽNÉ VYUŽÍT V JINÝCH PROGRAMECH BEZ PŘEPISOVÁNÍ KÓDU NEVÝHODY MENŠÍ PŘEHLEDNOST KÓDU NÁROČNĚJŠÍ SPRÁVA KÓDU

DI FRAMEWORKY SPRING FRAMEWORK JAVA EE WEBBEANS(CONTEXTS AND DEPENDENCY INJECTION - CDI) GOOGLE GUICE PICOCONTAINER JBOSS MICROCONTAINER

SPRING FRAMEWORK POPULÁRNÍ OPEN-SOURCE FRAMEWORK (OZNAČOVÁN TAKÉ JAKO KONTEJNER) PRO VÝVOJ J2EE APLIKACÍ PRVNÍ VERZE BYLA NAPSÁNA RODEM JOHNSONEM, KTERÝ JI VYDAL V RÁMCI PUBLIKACE SVÉ KNIHY EXPERT ONE-ON-ONE J2EE DESIGN AND DEVELOPMENT V ŘÍJNU 2002. ROD JOHNSON SE VE SVÉ KNIZE ZABÝVÁ VÝVOJEM J2EE APLIKACÍ A VĚNUJE POZORNOST PROBLÉMŮM, SE KTERÝMI SE PROGRAMÁTOŘI SETKÁVAJÍ. V KNIZE JE PRŮBĚŽNĚ PREZENTOVÁN KÓD FRAMEWORKU, KTERÝ SE NAZÝVÁ INTERFACE21, A MĚL BY VÝVOJ J2EE APLIKACÍ USNADNIT. ZA POMOCI JUERGENA HOELLERA JE POZDĚJI FRAMEWORK ROZŠÍŘEN A POD NÁZVEM SPRING FRAMEWORK UVOLNĚN JAKO OPEN-SOURCE.

SPRING ZÁKLADNÍM DŮVODEM VZNIKU SPRING FRAMEWORKU JE USNADNĚNÍ VÝVOJE ENTERPRISE APLIKACÍ: ODSTRANĚNÍ TĚSNÝCH PROGRAMOVÝCH VAZEB JEDNOTLIVÝCH POJO OBJEKTŮ A VRSTEV POMOCÍ NÁVRHOVÉHO VZORU INVERSION OF CONTROL. MOŽNOST VOLBY IMPLEMENTACE (EJB, POJO) BUSINESS VRSTVY PRO APLIKAČNÍ ARCHITEKTURU A NE NAOPAK (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 JE HIBERNATE, TOPLINK, IBATIS NEBO 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. USNADNĚNÍ POUŽÍVÁNÍ A PSANÍ UNIT TESTŮ. SPRÁVA A KONFIGURAČNÍ MANAGEMENT BUSINESS KOMPONENT.

SPRING 3 PŘÍKLAD ANOTACE JAVAX.INJECT.NAMED TAKTO OZNAČENOU BEAN SE SPRING BUDE SNAŽIT INJECTOVAT ANOTACE JAVAX.INJECT.INJECT OZNAČUJE MÍSTO, KDE MÁ SPRING INJECTOVAT BEAN @Named public class VolvoCarFactory implements CarFactory { @Inject CarFactory carfactory;