Spring Framework
Spring Framework je populární open-source aplikační rámec neboli framework (označován také jako kontejner) pro vývoj J2EE aplikací.
Vývojář | SpringSource |
---|---|
Aktuální verze | 5.3.15 (13. ledna 2022) |
Operační systém | multiplatformní |
Vyvíjeno v | Java |
Typ softwaru | aplikační framework |
Licence | Apache Licence 2.0 |
Web | www.springsource.org |
Některá data mohou pocházet z datové položky. |
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.
Framework byl poprvé uvolněn pod licencí Apache 2.0 v červnu 2003. První verze 1.0 byla vydána v březnu 2004, a další verze potom v září 2004 a březnu 2005. Spring Framework 1.2.6 získal v roce 2006 ocenění Jolt productivity award a JAX Innovation Award. Současná verze je 5.0.0.
Spring Framework může být použit libovolnou Java aplikací. Spring se stal populární v Java komunitě jako alternativa k Enterprise Java Beans (EJB), nebo jako jeho nadstavba.
Důvody vzniku
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.
Inversion of Control a Dependency Injection
Jádro Springu je postaveno na využití návrhového vzoru Inversion of Control a je označován jako IoC kontejner. Tento návrhový vzor funguje na principu přesunutí zodpovědnosti za vytvoření a provázání objektů z aplikace na framework. Objekty lze získat prostřednictvím vsazování závislostí, což je speciální případ Inversion of Control. Dependency Injection řeší vlastní způsob vložení objektů. Základní tři způsoby vložení objektů jsou Setter Injection, Constructor Injection a Interface Injection. Objekty vytvořené kontejnerem jsou nazývány JavaBeans. Objekty jsou frameworkem vytvořeny typicky na základě načtení konfiguračního souboru ve formátu XML, který obsahuje definice těchto Beans.
Spring Framework se nezabývá řešením již vyřešených problémů. Místo toho využívá prověřených a dobře fungujících existujících open-source nástrojů, které v sobě integruje. Tím se stává jejich použití často jednodušším.
Spring je modulární framework: Umožňuje využít třeba jen část, která se zrovna hodí k řešení daného problému. Účelem Springu je zjednodušení návrhu J2EE aplikací se zaměřením na architekturu aplikace (místo na technologii), na jednoduchou testovatelnost, na neinvazivnost a modulárnost.
Moduly
Spring Framework se skládá z částí organizovaných do asi dvaceti modulů. Moduly jsou rozděleny do skupin:
- Core Container
- Data Access/Integration
- Web
- AOP (Aspect Oriented Programming)
- Instrumentation
- Test
Core Container
Core Container se skládá z modulů Core, Beans, Context a Expression Language.
- Moduly Beans a Core poskytují základní části frameworku, včetně IoC a Dependency Injection. BeanFactory je sofistikované provedení návrhového vzoru factory (továrna).
- Modul Context staví na pevném základě poskytnutém moduly Core a Beans. Je to prostředek pro přístup k objektům způsobem, který je podobný rozhraní JNDI. Modul Kontext dědí vlastnosti z modulu Beans a přidává podporu pro internacionalizaci a Java EE funkce, jako jsou EJB a JMX. Ústředním bodem modulu Context je rozhraní ApplicationContext.
- Modul Expression je rozšíření jednotného jazyka pro vytváření výrazů (unified expression language), jak je uvedeno ve specifikaci JSP 2.1.
Data Access / Integration
Vrstva Data Access / Integration se skládá z JDBC, ORM, OXM, JMS a modulu Transactions.
- Modul JDBC poskytuje abstraktní JDBC vrstvu, která odstraňuje potřebu dělat nudné JDBC kódování a odchytávání chybových kódů specifických pro danou databázi.
- Modul ORM poskytuje integrační vrstvy pro populární API objektově relačního mapování, včetně SPS, JDO, Hibernate a iBatis. Pomocí ORM balíčku můžete využít všech uvedených frameworků pro O/R mapování v kombinaci se všemi ostatními funkcemi, které SpringFramework nabízí, jako například jednoduchý nástroj na řízení transakcí.
- Modul OXM poskytuje abstraktní vrstvu, která podporuje implementaci Object/XML mapování pro JAXB, Castor, XMLBeans, JiBX a Xstream.
- Modul JMS (Java Messaging Service) obsahuje funkce pro tvorbu a příjem zpráv.
- Modul Transactions podporuje programové a deklarativní řízení transakcí pro třídy implementující speciální rozhraní a pro všechny vaše POJO (Plain Old Java objekty).
Web
Vrstva Web se skládá z modulů Web, Web-Servlet, Web-Struts, a Web-portlet.
- Modul Web ve Spring Frameworku poskytuje základní webově orientované funkce, jako je funkce multipart file-upload.
- Modul Web-Servlet obsahuje Springovou implementaci model-view-controller (MVC) pro webové aplikace.
- Modul Web-Struts obsahuje podpůrné třídy pro integraci Struts do webových aplikací v rámci Springu.
- Modul Web-Portlet umožňuje implementaci MVC, které mají být použity v prostředí portletu a zrcadlí funkce Web-Servlet modulu.
AOP
AOP je modul implementující podporu pro aspektově orientované programování. Umožňuje separovat části kódu prolínající se celou aplikací (autorizace, logování, transakce) do takzvaných aspektů a jejich následnou aplikaci na jakýkoli POJO objekt. Využití AOP modulu se prolíná celým frameworkem a jedná se o jednu z nejsilnějších vlastností Springu.
Samostatný modul Aspects umožňuje integraci AspectJ.
Test
Modul Test podporuje testování komponent Springu pomocí JUnit nebo TestNG.
Externí odkazy
- (anglicky) Introduction to the Spring Framework by Rod Johnson, theserverside.com
- (anglicky) Spring Framework: Reference Documentation, springsource.org