Spring Framework Vysvětlení za 5 minut nebo méně
Spring Framework je robustní open-source platforma pro vývoj aplikací v jazyce Java. Umožňuje vytvářet spolehlivé a vysoce výkonné aplikace.
Open-source znamená, že kód je veřejně dostupný a může být volně používán, upravován a sdílen.
Aplikační framework s otevřeným zdrojovým kódem představuje základní strukturu pro vývoj softwaru, vytvořenou komunitou vývojářů. Existují různé typy těchto struktur, určené pro různé účely, jako je tvorba uživatelských rozhraní, webových stránek nebo komplexních softwarových aplikací.
Pokud s programováním aplikací teprve začínáte, může být Spring Framework výborným výchozím bodem. V tomto článku se seznámíte s jeho principy a možnostmi využití.
Co je Spring Framework?
Spring Framework je open-source platforma, kterou programátoři používají k vytváření podnikových aplikací v Javě. Jeho autorem je Rod Johnson a byl poprvé vydán v roce 2003 pod licencí Apache 2.0.
Někteří programátoři považují Javu za poměrně složitou pro tvorbu základních aplikací. Spring Framework má za cíl zjednodušit tento náročný proces vývoje podnikových aplikací v Javě.
Spring je velmi rozsáhlý. Proto je doporučeno nejprve pochopit základy samotného Spring Frameworku, než se pustíte do dalších projektů založených na Springu, jako jsou Spring Boot, Spring GraphQL nebo Spring Cloud.
Proč používat Spring Framework?
- Flexibilita. Spring Framework poskytuje technologie jako Aspect-Oriented Programming (AOP), Dependency Injection (DI) a Plain Old Java Object (POJO), které umožňují dosáhnout různých cílů.
- Rychlost. Navzdory bohaté nabídce technologií zůstává Spring Framework lehký, což ho činí vhodným pro vytváření škálovatelných a robustních podnikových webových aplikací.
- Aktivní komunita. Spring se může pochlubit rozsáhlou a ochotnou komunitou, která vám poskytne pomoc a řešení v případě potřeby.
- Bezpečnost. Spring je známý svými bezpečnostními prvky a zranitelnosti jsou pravidelně odstraňovány prostřednictvím aktualizací. Závislosti třetích stran jsou rovněž monitorovány, aby se předešlo jejich vlivu na bezpečnost.
- Produktivita. Spring Framework usnadňuje proces vývoje podnikových aplikací v Javě.
Funkce Spring Frameworku
Podpora aspektově orientovaného programování (AOP)
Aspektově orientované programování zlepšuje modularitu v oblasti průřezových záležitostí. AOP efektivně doplňuje objektově orientované programování.
Základní jednotkou modularity v AOP je aspekt (průřezový problém). To umožňuje vývojářům vytvářet deklarativní podnikové služby a specifické aspekty.
Inversion of Control (IoC) Kontejner
IoC kontejner poskytuje efektivní způsob správy a konfigurace Java objektů. Tento kontejner řídí životní cyklus definovaných Java objektů a výrazně zvyšuje rekonfigurovatelnost aplikací založených na Springu.
Inverze řízení využívá vyhledávání závislostí nebo vzory vkládání závislostí, aby nabídla referenci objektu za běhu. IoC kontejner obsahuje kód pro správu konfigurace.
Rámec pro přístup k datům
Proces komunikace s daty je zjednodušen, protože Spring nativně podporuje Hibernate, JDBC a Java Persistence API (JPA) – některé z nejrozšířenějších rámců pro přístup k datům v Javě. Spring také poskytuje funkce jako je zalamování prostředků, zpracování výjimek a správu prostředků pro všechny podporované rámce.
Spring MVC Framework
Vývojáři mohou použít tento rámec založený na požadavcích k vytvoření vlastních implementací MVC, které odpovídají jejich potřebám.
Jádrem Spring MVC je třída DispatcherServlet, která zpracovává požadavky uživatelů a předává je příslušnému kontroleru. Kontroler následně zpracuje požadavek, vytvoří model a poskytne informace uživateli pomocí definovaného pohledu.
Podpora různých testovacích frameworků
Aplikace vytvořené pomocí Springu je možné testovat během vývoje pomocí Mock objektů, TestContext frameworku nebo Spring MVC Test.
Jazyková podpora
Spring Framework nabízí podporu pro Groovy a Kotlin.
Architektura Spring Frameworku
Spring Framework se skládá z přibližně 20 modulů. Výhodou je, že si můžete vybrat pouze ty moduly, které jsou pro váš projekt relevantní. Tyto moduly jsou rozděleny do kategorií: Core Container, AOP (Aspect Oriented Programming), Data Access/Integration, Web, Instrumentation a Test.
Obrazový kredit: Spring.io
#1. Core Container
Základní kontejner Spring Frameworku obsahuje moduly Core, Beans, Context a Expression Language. Tyto moduly jsou užitečné pro následující účely:
- Modul Core je klíčovou součástí rámce. Zajišťuje funkcionalitu IoC (Inversion of Control) a Dependency Injection (DI).
- Modul Beans je známý díky BeanFactory, což je sofistikovaná implementace Factory vzoru.
- Modul Context je postaven na modulech Core a Bean. Dědí jejich funkce a přidává podporu pro internacionalizaci.
- Modul Expression Language nabízí výkonný výrazový jazyk pro manipulaci s objekty a dotazování se na graf objektů za běhu.
#2. Přístup k datům/Integrace
Moduly JDBC, ORM, OXM, JMS a Transaction tvoří vrstvu pro přístup k datům a integraci. Jejich funkce jsou následující:
- Modul JDBC poskytuje abstrakční vrstvu pro JDBC, která snižuje potřebu složitého kódu JDBC a analýzy chybových kódů specifických pro databáze.
- ORM je integrační vrstva pro oblíbená rozhraní pro objektově-relační mapování, jako jsou JPA, JDO, Hibernate a iBatis.
- Modul OXM je abstrakční vrstva pro mapování objektů/XML pro XStream, JAXB, JiBX, Castor a XMLBeans.
- Modul Transaction podporuje deklarativní a programovou správu transakcí pro třídy, které implementují speciální rozhraní.
- Modul Java Messaging Service (JMS) nabízí funkcionalitu pro vytváření a využívání zpráv.
#3. AOP (Aspect Oriented Programming) a Instrumentace
Tento modul obsahuje implementaci aspektově orientovaného programování, kompatibilní s AOP Alliance. Umožňuje definování prvků jako jsou zachytávače metod. Modul Instrumentation nabízí podporu classloaderu a class instrumentation pro specifické aplikační servery.
#4. Web
Webová vrstva se skládá z modulů Web, Web-Servlet, Web-Struts a Web-Portlet.
- Modul Web je zodpovědný za základní webové integrační funkce, jako je například podpora pro nahrávání souborů.
- Modul Web-Servlet obsahuje implementaci Spring MVC pro webové aplikace.
- Modul Web-Portlet zrcadlí funkcionalitu modulu Web-Servlet a nabízí implementaci MVC pro použití v prostředí portletu.
- Modul Web-Socket podporuje obousměrnou komunikaci mezi serverem a klientem ve webových aplikacích.
#5. Test
Testovací modul je poslední částí architektury Spring. Poskytuje podporu pro testování Spring komponent pomocí TestNG nebo JUnit.
Instalace Spring Frameworku
Kontrola instalace Java
Předtím, než se ponoříme do fungování Spring Frameworku, je nutné jej nainstalovat. Dokumentace Spring obsahuje podrobné instrukce pro různé operační systémy.
V tomto příkladu použijeme Ubuntu 20.04.5, operační systém založený na Linuxu.
Nejdříve ověřte, zda máte nainstalovanou Javu pomocí příkazu:
java -version
Pokud je Java nainstalovaná, měli byste vidět výstup podobný následujícímu:

Pokud nemáte Javu nainstalovanou, existuje několik způsobů, jak ji instalovat dle vašich potřeb.
Instalace Spring Frameworku
Existuje několik způsobů, jak nainstalovat Spring Framework, jak je uvedeno v dokumentaci Spring.
V tomto příkladu použijeme GVM (Groovy Environment Manager). GVM můžete získat pomocí GVMtool nebo ho nainstalovat pomocí příkazové řádky.
Jakmile máte GVM, použijte následující příkazy pro instalaci a ověření instalace Spring Frameworku:
gvm install springboot
spring --version
Pokud je Spring nainstalován, měli byste vidět výstup podobný tomuto:

Důležité pojmy související se Spring Frameworkem
Injekce závislostí (Dependency Injection)
Injekce závislostí je funkce, která umožňuje vývojářům vytvářet nezávislé objekty mimo třídu. Dále umožňuje poskytovat tyto objekty třídě různými způsoby.
Inverze řízení (Inversion of Control - IoC)
IoC je koncept, který přesouvá kontrolu nad částmi programu nebo objekty do frameworku nebo kontejneru. V tradičním programování náš kód volá do knihovny, zatímco v případě IoC framework (například Spring) volá do našeho kódu a řídí tok programu.
Aspektově orientované programování (Aspect Oriented Programming - AOP)
AOP je technika pro vytváření společných a opakovaně použitelných rutin, které lze použít v celé aplikaci. Tento přístup odděluje opakující se úlohy (jako ověřování vstupů, logování a zpracování chyb) od hlavní aplikační logiky.
Učební zdroje pro Spring Framework
#1. Reaktivní programování s Spring Framework 5

Tento kurz obsahuje videa, články a zdroje ke stažení. Naučíte se funkcionální programování s Javou, jak pracovat s mikroslužbami pomocí Spring WebFlux a jak využít reaktivní typy v Spring Data MongoDB.
#2. Spring Framework Master Class

Spring Framework Master Class je placený kurz, který vyučuje praktické využití Spring Frameworku v Java projektech. Naučíte se používat různé nástroje jako Spring Boot, JUnit & Mockito, Spring JDBC, Spring AOP a Hibernate.
#3. Spring Framework v jednoduchých krocích

Spring Framework In Easy Steps je prémiový kurz, který je vhodný, pokud chcete vytvářet komplexní Java EE webové aplikace s využitím Spring Frameworku. Naučíte se například vyvíjet webové aplikace pomocí Spring MVC, provádět Ajax volání s JQuery a Spring MVC, a také používat Spring JDBC pro databázové operace.
#4. Spring Framework 5

Kurz Spring Framework 5 je vhodný, pokud se chcete naučit Spring Framework 5, Spring Data MongoDB, Spring Boot 2, Spring MVC, Spring Data JPA a Hibernate. Kurz nabízí 57 hodin videí na vyžádání, 13 článků a mnoho materiálů ke stažení.
Poznámka autora
Java je stále jedním z nejoblíbenějších programovacích jazyků. I když se objevují nové jazyky, frameworky jako Spring přinášejí Javě nový život a rozšiřují její možnosti. Proto je pravděpodobné, že i nadále bude poptávka po Java inženýrech, kteří jsou nezbytní pro údržbu stávajícího kódu a vývoj nových aplikací.
Závěr
Spring je jedním z nejvýznamnějších frameworků v Java EE a doufáme, že nyní lépe rozumíte tomu, co je Spring Framework, jaké má funkce, architekturu a pracovní postup. V kombinaci s dalšími projekty Spring poskytuje tento framework vývojářům širokou škálu nástrojů pro různá vývojová prostředí.