Spring je populární open-sourcový Framework pro vývoj J2EE aplikací. Jeho první verzi napsal Rod Johnson a vydal ji v rámci publikace své knihy Expert One-on-One J2EE Design and Development již v říjnu 2002. Poprvé byl uvolněn pod licencí Apache 2.0 v červnu 2003.

Proč Spring vznikl

Základem toho, proč Spring Framework vznikl, byla snaha o usnadnění vývoje enterprise aplikací.

To měl dokázat prostřednictvím:

  • Odstranění těsných programových vazeb mezi jednotlivými POJO objekty a vrstvami za využití návrhového vzoru Inversion of Control.
  • Možnosti volby implementace business vrstvy EJB nebo POJO pro aplikační architekturu a nikoliv naopak, tedy aby architektura předepisovala implementaci.
  • Řešení různých aplikačních domén, aniž by bylo nutné použít EJB. To se projevilo například v transakčním zpracování, podpoře pro remoting business vrstvy pomocí webových služeb nebo RMI.
  • Podpory implementace komponent použitých k přístupu k datům formou JDBC nebo ORM (object-relation mapping) technologií a nástrojů typu Hibernate, TopLink, iBatis nebo JDO.
  • Odstranění závislosti na různých roztroušených konfiguracích, jejichž význam bylo nutné složitě dohledávat.
  • Abstrakcí, která vede ke zjednodušení použití dalších částí J2EE, například JMS, JMX, JavaMail, JDBC, JCA nebo JNDI.
  • Usnadnění psaní a použití jednotkových testů.
  • Správy a konfiguračního managementu business komponent.

Výhody použití Spring

  • Není potřeba znovu vynalézat kolo. Jedním z největších benefitů je to, že vývojáři mohou využít známé technologie, ORM frameworky, loggovací frameworky, JEE, JDK časovače, Quartz a další. Vývojáři se tak nemusí se učit nové technologie nebo frameworky.
  • Testovatelnost. Pokud chcete testovat aplikace, které jsou vyvíjeny za pomoci Springu, je to relativně jednoduché. Hlavním důvodem je to, že je v rámci frameworku dostupný kód závislý na prostředí.
  • API. Spring Framework nabízí inversion control a API, které překladají technologií řízené výjimky, specificky vyhazované v rámci JDBC? Hibernate nebo JDO do konzistentních výjimek.
  • Modularita. Vzhledem k modulární organizaci je ve Springu pro vývojáře jednodušší vědět, které balíčky nebo třídy má používat a které raději ignorovat. Nezáleží na počtu balíčků a tříd, použitelné díky této vlastnosti vývojář najde relativně snadno.
  • Konzistentní správa transakcí. Za pomoci interface pro konzistentní správu transakcí je snadné Spring škálovat nahoru i dolů v rámci lokálních i globálních transakcí.
  • AOP. Není potřeba, aby měl vývojář oddělenou kompilační jednotku nebo oddělení class loader. Zároveň IOC používá pro dependency injection, díky čemuž je konfigurace ještě snadnější.

Nevýhody použití Spring

  • Komplexita. Jedním z největších bodů kritiky ohledně Springu je to, že je velmi komplexní. Nemá tak jasné zaměření, více než 2400 tříd, 49 dalších nástrojů a mnoho dalších návazností, které zvyšují složitost.
  • Náročnější na učení. Pro začínající vývojáře je Spring Framework relativně složitý na pochopení. Obsahuje širokou škálu nových programovacích metod a vyžaduje tak hlubokou znalost toho, jak nastavit konfigurační soubor XML.
  • XML. Všechny aplikace ve Springu vyžadují mnoho XML.
  • Paralelní mechanismy. Paralelní mechanismy jsou velmi užitečné, ale ve Springu jich je opravdu mnoho. To je ve výsledku spíše matoucí. Je totiž potřeba dedikovat neúměrně mnoho času výběru vhodného způsobu.
  • Bezpečnostní Best Practices. Neexistují jasné pokyny, jak si poradit s bezpečnostními hrozbami. Spring obsahuje několik bezpečnostních děr a není obecně přijímaný postup, jak se bránit proti běžným útokům.