Základní pojmy související se Springem máme z krku, můžeme se tedy vrhnout na samotný Spring. Mrknem se na účel a zacílení Springu, zmíníme se o často využívané možnosti nahradit Springem EJB a nakonec vypíchneme některé výhody, které sebou použití Springu nese.

Účel Springu

Spring je aplikačním frameworkem, zjednodušujícím návrh komplexních J2EE aplikací a podporujícím použití správných programátorských praktik, jakými jsou použití návrhových vzorů, kvalitní dekompozice kódu či používání rozhraní místo konkrétních tříd.

Spring je možné využít ke zjednodušení práce v mnoha oblastech J2EE vývoje. Návrh frameworku je silně modulární, takže v daném projektu je možné využít třeba jen té části Springu, kterou pro řešení daného problému potřebujeme. Pro Spring je také charakteristický fakt, že se nesnaží implementovat vlastní řešení již vyřešených problémů. Raději využívá existujících kvalitních a časem prověřených open-source nástrojů a integruje je v jeden celek. Často také jejich použití ještě zjednodušuje.

Zacílení Springu

Hrubý výčet schopností Springu je následující:

  • aplikace návrhového vzoru Dependency Injection,
  • podpora AOP – kompatibilní s AOP Alliance standardem, integrace AspectJ,
  • integrace rozšířených ORM nástrojů – Hibernate, JDO, iBatis, Cayenne
  • zjednodušení práce s JDBC,
  • deklarativní management transakcí,
  • manipulace se zdroji – soubory, URL, …
  • vlastní MVC framework včetně možnosti integrace jiných MVC řešení, jako např. Struts, WebWork či Tapestry
  • integrace množství prezentačních technologií – JSP, JSTL, Tiles, Tapestry, Freemarker, Velocity, XSLT, PDF, Excel,
  • správa událostí (event handling),
  • zpracování metadat na úrovni kódu,
  • vlastní hierarchie a zpracování výjimek,
  • podpora webových služeb – SOAP, Hessian, Burlap, JAX RPC, RMI
  • integrace JMS,
  • posílání e-mailů,
  • podpora EJB,
  • internacionalizace,
  • podpora plánovačů – OpenSymphony Quartz Scheduler, JDK Timer,
  • podpora JMX.

Spring vs EJB

Existuje zřejmě jen málo Java programátorů, kteří nepovažují EJB za moloch, který je třeba zeštíhlit a zjednodušit, aby byl snadno a lehce použitelný pro rychlý vývoj J2EE aplikací. Takové odlehčení EJB slibuje specifikace verze 3.0, na druhou stranu kdo ví, kdy se trojka dostane do praxe a jak se zapíše. Už dnes však lze k řešení velké většiny J2EE projektů použít Spring namísto EJB. Zjednoduší se tak návrh a zlepší čitelnost, udržovatelnost a testovatelnost projektu.

Spring je schopen zajistit deklarativní správu transakcí, pooling databázových spojení, persistenci objektů a ve spolupráci s příbuzným projektem Acegi Security System i deklarativní správu zabezpečení.

Výsledná aplikace také narozdíl od EJB aplikace není závislá na konkrétním aplikačním serveru, dokonce může běžet i v samostatném webovém kontejneru, jakými jsou Tomcat či Resin.

V případech, kdy se pro EJB přece jen rozhodnete, je možné využít podpory, kterou v sobě Spring pro EJB má.

Výhody Springu

Použití Springu přináší ve srovnání s jinými podobně zaměřenými frameworky programátoru J2EE aplikací řadu výhod. Zde jsou některé z nich:

  • jednoduchost a přímočarost použití,
  • nezávislost výsledného kódu na aplikačním prostředí,
  • nulová či minimální závislost aplikačního kódu na Springu,
  • vše v jednom – Spring pokrývá (například na rozdíl od Struts) všechny vrstvy aplikace – od prezentační až po persistenční vrstvu,
  • logická struktura infrastrukturních tříd frameworku umožňuje snadné přizpůsobení jejich chování rozšířením,
  • sjednocující princip definice objektů a jejich provázanosti v konfiguračním souboru, který umožňuje například i jednoduchou testovatelnost jednotek aplikace,
  • nebývale vysoká míra pokrytí kódu samotného frameworku testy, což zaručuje jeho stabilitu.

Za sebe mohu říci, že přínosem pro mě bylo i setkání se s mnoha návrhovými vzory v praxi. Jak již bylo řečeno Spring napomáhá dekompozici kódu aplikací množství návrhových vzorů, takže prací se Springem se s nimi seznámíte skutečně podrobně. Na druhou stranu, chcete-li je tam vidět, je nutné o nich aspoň něco málo vědět :).