A tavaszi keret alapjai

Java: cikk A tavaszi keret: Az alapok

A tavasz most nagyon népszerű nyílt forráskódú projekt, amely sok szempontból, hogy a J2EE és a Java fejlesztés.

E cikk célja, hogy leírja az architektúra és a fő jellemzői tavasz.

építészet

Tavaszi építészet képviseli a következő program

A tavaszi keret alapjai

Ábra. Tavaszi rendszer 1

Később a cikkben fogjuk megvitatni a fő összetevői a Spring Framework.

1. NOB konténer

A tavaszi, minta alapján megfordítása ellenőrzés. Ami a könnyű tartályok, az alapötlet ez a minta, hogy megszüntesse a függőség az alkatrészek vagy osztályok alkalmazásának konkrét megvalósítások kiegészítő interfészek és felhatalmazás kezelni létrehozására a szükséges alkalmazásokkal NOB konténer. Tekintsük a UML diagram.

NOB konténer felelős létre a szükséges végrehajtásához Termék Consumer. Ha a fogyasztói osztály más projektekben leszünk képesek helyettesíteni a végrehajtás a termék felülete több alkalmas, anélkül, hogy a kód megváltoztatása.

Fő előnyei NOB konténer:
  1. függőség kezelése
  2. egyszerűsítése újrafelhasználás osztályok vagy alkatrészek
  3. egyszerűsítése egység vizsgálata
  4. több „tiszta” kód (osztályok már nem vesznek részt az inicializálás kiegészítő létesítmények. Nem szükséges, természetesen „túl messzire”, vezetés létrehozása abszolút minden tárgyat keresztül NOB. A NOB konténer a legjobb, hogy azok az interfészek, amelyek végrehajtása lehet változtatni a jelenlegi projekt vagy jövőbeli projektek).

NOB minta nem csak lehetővé teszi, hogy megszüntesse a függés a végrehajtás. Egy alternatíva a NOB jól ismert ServiceLocator / gyári sablonokat.

A tavaszi keret alapjai

Ábra. 3 sablon ServiceLocator

Ez a megközelítés vezet függés a kódot ServiceLocator, ami alacsonyabb rugalmasságot. A fő hátránya ServiceLocator sablon:
  1. Amennyiben ugyanazon projekt különböző esetekben szükséges a különböző megvalósításai termék, vagy meg kell változtatni ServiceLocator hívó kód használható minden területen, meghatározva a további paramétereket változtatni bármit ServiceLocator. Mindkét lehetőség vezet „szemetelés” a kódot, kiegészítő feltételek bevezetéséről és paraméterek, ami megnehezítheti a kódot, és újrafelhasználásra.
  2. Amikor használja kód más projektekben
  • (ServiceLocator terjesztett forrás) Abban az esetben, a kívánt végrehajtásához termék, további paramétereket meg kell változtatni, hogy a mellékelt ServiceLocator. Az is, hogy a létezés a rendszerben a ServiceLocator több, amelyek mindegyike kell lennie a maga módján, hogy hozzanak létre, ami megnehezíti, hogy támogassa.
  • (ServiceLocator nem tartozéka a kód) Ebben az esetben meg kell változtatni a hívás ServiceLocator ahhoz, amit a rendszerben. Bevezetése egy közös felületen is nem oldja meg a problémát.

A leggyakoribb módja a meghatározó függőségek XML konfigurációs fájlok (applicationContext.xml). Leírás A fájl formátuma a túlmutat ezt a cikket.

Tavaszi sokkal több, mint egy NOB konténer. Framework leegyszerűsíti a fejlesztés J2EE projektek végrehajtása alacsony szintű, és leggyakrabban icpolzuemye része egy vállalati alkalmazás.

Az egyik legfontosabb összetevői a tavasz az AOP keret. Használata nélkül is AOP közvetlenül, akkor valószínű, hogy találkozik velük közvetve.

A fő megoldandó feladatok segítségével AOP a Spring:
  1. A deklaratív tranzakció kezelésére.
  2. Az összevonás tárgyakat.
  3. Írás saját szempontjait.

A legkényelmesebb és rugalmas tranzakciót végző deklaratív tranzakció kezelésére. Ha már dolgozott együtt az EJB CMT, a képzelni, mi az. A deklaratív tranzakció kezelésére kódot megszünteti függés keretet, vagy egy adott tranzakció-ellenőrző.

A konfigurációs fájl (applicationContext.xml) a következő:

Az objektum már myService tranzakciós MyBusinessObject, az ahhoz való hozzáférés révén Proxy (TransactionProxyFactoryBean), és amely irányítja tranzakciókat. A felhasználó számára nem lesz különbség, hogy működjön együtt a Proxy, hogy a munka MyBusinessObject közvetlenül. Van egy másik módja, hogy leírja a tranzakció konfiguráció BeanNameAutoProxyCreator. Ez a módszer lehetővé teszi, hogy csökkentsék a méretét a konfigurációs fájlban. További információért olvassa el a dokumentációt.

Egyesítése használt objektumok az EJB. Container támogatja nélküli EJB medence hívás esetén a tárgy kikerül a medencében. Ha tavasz, úszómedencével lehet tartani bármilyen POJO (Plain Old Java Object). Egy példa konfigurációs fájl:

AOP segít kiküszöbölni a kettős kód. A Java egy objektum-orientált nyelv, amely lehetővé teszi, hogy hozzon létre egy hierarchiáját kapcsolódó tárgyakat. De mi van, ha ugyanazt a kódot használják a különböző hierarchia tárgyak?

akkor úgy bármely alkalmazás két szempontból. A funkcionalitás szempontjából az egyes csoportokra (core foglalkozik) és amely minden funkcionális alkalmazás (horizontális szempontok). Modulok, vezérlő Hossztolásnál aggályok, az úgynevezett szempontokat. Tavasszal szempontok valósul tanácsadók és Interceptor.

Szempontok hajtsa végre a következő feladatokat látja el: fakitermelés, caching, biztonsági menedzsment, tranzakciók stb A bevezetés egy további réteg elfogó körvonalazza közötti felelősség a fő forrása és kisegítő feladatokat. Ez leegyszerűsíti a kód karbantartását és újrafelhasználását. A pusztítók függetlenül konfigurálható, fel lehet használni más projektekben, viszont a tárgyakat lehet konfigurálni különböző spoiler.

Vegyük például a feladat - meghatározási módszerek végrehajtási időt. Ez hasznos lehet, hogy azonosítsák a szűk, mint a vizsgálat időpontjában, és a termelés a tényleges felhasználók száma a valós adatokat.

Megjegyzés: a org.aopalliance.intercept.MethodInterceptor felületen. Ez AOP Szövetség felület. Ennek megfelelően egy ilyen hordozható spoilerek más AOP keretek között. A tavaszi saját elfogó interfészek célja a különböző alkalmakkor. Ebben a cikkben, ezek az interfészek nem vesszük figyelembe.

MethodInterceptor biztosítja a legteljesebb ellenőrzést a folyamat felett. A mi feladatunk, igaz ezt a felületet.

A 12-es vonal van egy hívás elfogó mellett a lánc vagy a fő célja a módszer. Jegyezzük meg, mi lenne PerformanceInterceptor hogy a legpontosabb információkat egy módszer teljesítményét időt kell lennie az utolsó a láncban.

Most már csak meg kell változtatni a konfigurációs fájlban.

további jellemzők

Mint korábban említettük, Spring NOB konténer mellett tartalmaz egy sor olyan osztályok, amelyek megvalósítása a legkeresettebb funkcionalitása J2EE alkalmazások. Tavaszi leegyszerűsíti a dolgozó JDBC, ORM keretrendszerek, EJB, webes szolgáltatások. Framework végrehajtja a magasabb absztrakciós szinten levelezési cím kezelésére, caching, teljesítménye ütemezett feladatok. Ezen túlmenően, a tavaszi is tartalmaz egy webes keretrendszer.


Nem valószínű, hogy minden tavaszi funkciókkal fogják használni az alkalmazás. Tehát akkor is az alkalmazás csak azokat a jar-fájl, az osztályok, hogy használja. Tavaszi magában osztályok jar csomag: rugós aop.jar, rugós beans.jar stb Akkor is egy korsó minden osztály - spring.jar.

Továbbá néhány jellemzője Spring Framework ismertetjük.

Kezdjük rögtön egy példát.

Többé nem kell, hogy írjon nehézkes tervek próbálja fogás (..) végül kapcsolatok kezelésére, tranzakciók. Egyszerű lekérdezések általában fér egy sorban.

Az internalizációs (i18n) konfiguráció és

Tavaszi magában osztályok és interfészek internalizálását az alkalmazást. Az összes üzenet tárolja tulajdonságok fájlokat. A tulajdonságok fájl megfelel egy nyelvet. Annak érdekében, hogy hozzáférjen az ezeket a jelentéseket, hozzá kell applicationContext.xml messageSource bin. MessageSource név kötelező. Tavaszi támogatja a hierarchikus üzenetét.

A ApplicationContext interfész (alap interfészt, amely meghatározza alkalmazás konfigurációs) megfelelő módszereket getMessage (MessageSourceResolvable felbontható, LOCALE), getMessage (String kód, Object [] args, LOCALE), getMessage (String kód, Object [] args, karakterlánc defaultMessage, locale locale). Használati példa:

Minden beállítás az alkalmazás kényelmesen tárolható egy vagy több tulajdonsággal fájlokat. Ezek közvetlenül elérhető applicationContext.xml. Ehhez meg kell adni applicationContext.xml bin.

Ezután a paramétereket lehet elérni a következő.

Ahol jdbc.jndiName konfigurációs paraméter a WEB-INF / config.properties.

Események kezelése tavaszi keresztül ApplicationEvent ApplicationListener osztály és interfész. Amikor egy esemény bekövetkezik, a bejelentő az összes tárgyat az interfészt megvalósító ApplicationListener. Vegyünk egy példát.

Hívjon context.publishEvent () zajlik szinkron módban. Minden ApplicationListener végre ugyanilyen tranzakciós kontextusban EventPublisher.

következtetés

Ez a cikk fedezi az alapelveket és néhány jellemzője tavasz. A részletesebb vizsgálat azt ajánlom, hogy olvassa el a könyvet tavaszi akcióban, és a kapott dokumentációt a forgalmazás.
A fő előnye Spring következők: az egyszerűség; használhatóság tesztelése; alkalmazásával Spring pozitív hatással alkalmazások tervezése és az egyszerű kódot.

Tavasszal eladott egy csomó, ami nélkül nem csinál szinte minden Java alkalmazást. Mielőtt feltalálás valami más meg, talán már a tavasz.


Figyelmeztetés. mysql_connect () [function.mysql-csatlakozáshoz]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/books/show2b.php 11 vonalon

Figyelmeztetés. mysql_db_query () [function.mysql-db-query]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/books/show2b.php on 19. sor

Figyelmeztetés. mysql_db_query () [function.mysql-db-lekérdezés]: Egy link a szerver nem volt megállapítható a /pub/home/javaport/javaportal/books/show2b.php on line 19

Figyelmeztetés. mysql_fetch_array (): mellékelt érv nem érvényes MySQL eredmény az /pub/home/javaport/javaportal/books/show2b.php on line 30
Tudja meg, amit valójában gondol most itt.


[Hiba történt a feldolgozás ezen irányelv]


Figyelmeztetés. mysql_connect () [function.mysql-csatlakozáshoz]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/news/worldnews.php on line 91

Figyelmeztetés. mysql_db_query () [function.mysql-db-query]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/news/worldnews.php on vonal 93

Figyelmeztetés. mysql_db_query () [function.mysql-db-lekérdezés]: Egy link a szerver nem volt megállapítható a /pub/home/javaport/javaportal/news/worldnews.php on line 93

Figyelmeztetés. mysql_fetch_array (): mellékelt érv nem érvényes MySQL eredmény az /pub/home/javaport/javaportal/news/worldnews.php on line 95

Kapcsolódó cikkek