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.