Java programátor expert
Spring Boot je jeden z najpoužívanejších Java frameworkov na vývoj webových aplikácií. Ak si chceš vytvoriť vlastnú webovú aplikáciu, no odrádza ťa množstvo nastavení a nejasných postupov, Spring Boot ti výrazne zjednoduší vývoj a umožní ti postaviť funkčný projekt bez zbytočného trápenia. Pripraví za teba prakticky všetko, čo sa inak nastavuje ručne: webový server, štruktúru projektu, závislosti, automatickú konfiguráciu aj vytvorenie spustiteľného JAR súboru. Vďaka tomu sa môžeš naplno venovať samotnej logike aplikácie.

V článku sa dozvieš:
V Spring Boot tutoriáli nájdeš praktické tipy a návod, ako vytvoriť svoju prvú jednoduchú webovú aplikáciu. Nauč sa zobraziť formulár, získaj meno používateľa a vráť mu personalizované privítanie. Spoznáš pritom technológie, ktoré patria medzi štandardy dnešného Java vývoja: Spring Boot, Maven, IntelliJ IDEA, šablónovací engine Thymeleaf a základné HTML/CSS. A čo je najlepšie? Nepotrebuješ roky skúseností. Stačí základná znalosť Javy a chuť vyskúšať niečo nové. Spustiť vlastnú webovú aplikáciu na lokálnom serveri (na adrese localhost:8080) je prekvapivo jednoduché a predstavuje skvelý štart do sveta moderného Java vývoja.
Si ready pustiť sa do svojej prvej webapky? Poďme na to!
Spring Boot je rozšírenie populárneho Java frameworku Spring, ktoré prináša rýchly a jednoduchý spôsob vytvárania moderných webových aplikácií. Kým pôvodný Java Spring framework vyžadoval množstvo XML konfigurácií a manuálne nastavovanie komponentov, Spring Boot tento proces výrazne zjednodušuje. Robí to pomocou inteligentnej automatickej konfigurácie (auto-configuration), pripravených starter závislostí a vstavaného webového servera. Vďaka tomu patrí medzi najobľúbenejšie nástroje na Java programovanie webových aplikácií.
V praxi to znamená, že s Java Spring Bootom môžeš spustiť plnohodnotnú webovú aplikáciu bez toho, aby si musel riešiť Tomcat, servlety, komplikované nastavenia či rozmiestnenie konfiguračných súborov. Stačí vytvoriť nový projekt, pridať controller, HTML šablónu a aplikácia je pripravená bežať.
Java Spring Boot bol vždy veľmi flexibilný, no flexibilita prinášala množstvo práce navyše. Spring Boot vznikol ako odpoveď na otázku: „Ako zrýchliť vývoj aplikácií bez toho, aby sa vývojár musel prehrabávať stovkami nastavení?“
Výsledkom je framework, ktorý za teba automatizuje väčšinu rozhodnutí, a pritom ti nechá možnosť upraviť všetko, čo budeš potrebovať.
Medzi kľúčové výhody Spring Bootu patria:
Ak si so Spring Boot práve začal, neboj sa, práve vďaka týmto vlastnostiam je jedným z najpriateľskejších Java frameworkov pre začiatočníkov.
Každý Spring Boot projekt obsahuje hlavnú triedu s anotáciou:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Táto jednoduchá trieda dokáže spustiť celú aplikáciu vrátane zabudovaného Tomcatu na porte 8080. Žiadne XML, žiadne manuálne nastavovanie servera. V ďalšej kapitole sa pozrieme na to, ako si pripraviť nástroje a prostredie, aby sme mohli začať s vývojom.
Skôr než vytvoríš prvú Spring Boot webovú aplikáciu, uisti sa, že máš pripravené základné nástroje. Potrebuješ si najskôr stiahnuť a nainštalovať dva základné programy:
Návody pre inštaláciu JDK a prostredia podľa vlastného výberu nájdeš aj u nás. K dispozícii sú: IntelliJ IDEA, Eclipse alebo NetBeans.
Maven – používa sa ako buildovací nástroj, ktorý sa stará o sťahovanie závislostí (spring-boot-starter-web, thymeleaf, atď.).
Webový prehliadač (stačí Chrome, Firefox alebo Edge) – aplikácia bude bežať lokálne na http://localhost:8080.
HTML/CSS editor (voliteľné) – keďže formulár budeme robiť cez Thymeleaf, je dobré poznať aspoň základné tagy (form, input, button) s jednoduchým CSS pre štýlovanie.
Vytvoríme nový Spring Boot projekt cez Spring Initializr, oficiálny online generátor Spring Boot projektov. Je to pravdepodobne najrýchlejší spôsob, ako vytvoriť predpripravenú kostru projektu s Maven nastavením. Postupuj presne podľa krokov nižšie.
Choď na: https://start.spring.io/
(alebo v IntelliJ: File → New → Project → Spring Initializr, IntelliJ dokáže vygenerovať projekt priamo z toho istého rozhrania).
Vyplň tieto polia (odporúčané hodnoty pre tento tutoriál):
Project: Maven Project
Language: Java
Spring Boot: vyber poslednú stabilnú verziu (napr. 4.x.x, ak máš JDK 25+).
Project Metadata:
Ak v IntelliJ vytváraš projekt cez Initializr priamo v IDE, zvoľ rovnaké hodnoty priamo tam.
Pre našu jednoduchú webaplikáciu vyber minimálne tieto závislosti:
Spring Web
Poskytuje Spring MVC a zabudovaný webový server (Tomcat).
Thymeleaf
Šablónovací engine pre HTML (použijeme ho pre formulár a výslednú stránku).
Spring Boot DevTools (voliteľné, odporúčané pre vývoj)
auto-reload pri zmene kódu.
Po výbere stlač na spodku stránky tlačidlo GENERATE. Stiahne sa ZIP súbor (SpringBootTutorial.zip) so štruktúrou projektu.

Rozbaľ stiahnutý ZIP do vybraného adresára. Ďalší postup bude písaný pre vývojové prostredie IntelliJ IDEA. Postup v iných prostrediach bude veľmi podobný.
V IntelliJ: File → Open… → vyber súbor pom.xml z rozbaleného projektu a potvrď import ako Maven projekt. IntelliJ stiahne závislosti (môže to chvíľku trvať).

Po importe uvidíš typickú Maven štruktúru:

Priečinok main sa používa pre umiestnenie hlavného kódu. Ako môžeš vidieť, Spring Boot nám vytvoril v balíku hlavnú triedu SpringBootTutorialApplication.java. Priečinok resources obsahuje ešte priečinky templates pre Thymeleaf šablóny (.html) a priečinok static pre iné súbory, napríklad CSS, JS a obrázky.
Priečinok test slúži na umiestnenie testovacích tried pre hlavný kód.
Takto vyzerá hlavná trieda po vygenerovaní:
package com.example.springboottutorial;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootTutorialApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootTutorialApplication.class, args);
}
}
Skontrolovať si môžeš aj vygenerovaný súbor so závislosťami pom.xml. Mal by obsahovať všetky, ktoré si si vybral v kroku č. 3.
Na spustenie projektu máš 2 možnosti:
Po spustení by sa aplikácia mala nachádzať na http://localhost:8080.
Spustenie webaplikácie ihneď po vygenerovaní a naimportovaní do IDE nedáva veľký zmysel, dostali by sme Whitelabel Error Page (status 404). To sa objaví vtedy, keď aplikácia beží, ale Spring Boot nenašiel žiadnu stránku alebo controller za URL, takže nevie, čo má zobraziť.
V predchádzajúcej kapitole sme si vytvorili čistý Spring Boot projekt bez napísania jediného riadku kódu. Ak by sme ho nepoužili, museli by sme si všetko vytvoriť svojpomocne.
V tejto časti si navrhneme jednoduchý Spring MVC controller, ktorý zobrazí HTML formulár a spracuje odoslané meno používateľa. Použijeme Thymeleaf na šablóny a Model / @RequestParam na predanie dát medzi controllerom a view. Ukážeme si dve bežné varianty spracovania (priame zobrazenie výsledku a PRG — Post/Redirect/Get).
V projekte v balíku com.example.springboottutorial.controller vytvor súbor, napr.: HomeController.java.
package com.example.springboottutorial.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HomeController {
@GetMapping("/")
public String index() {
// Vráti šablónu src/main/resources/templates/index.html
return "index";
}
@PostMapping("/greet")
public String greet(@RequestParam(name = "name", required = false) String name, Model model) {
if (name == null || name.trim().isEmpty()) {
name = "neznámy používateľ";
}
model.addAttribute("name", name.trim());
// Vrátime šablónu src/main/resources/templates/greeting.html
return "greeting";
}
}
Vysvetlenie Spring notácie:
@Controller – označuje triedu ako MVC controller (vracia view names).
@GetMapping(„/“) – zobrazuje úvodnú stránku s formulárom.
@PostMapping(„/greet“) – spracuje odoslaný formulár
@RequestParam – číta parameter name.
Model slúži na odovzdanie dát do Thymeleaf šablóny (greeting.html).
Predchádzajúce riešenie po odoslaní formulára cez POST server rovno vráti HTML (200). Ak používateľ stlačí refresh alebo použije Back/Forward, prehliadač sa snaží znovu odoslať ten istý POST, zobrazí sa varovanie „Confirm form resubmission“ alebo dôjde k opakovanému vykonaniu akcie. V našom prípade je to jedno, ale keby sme napr. spracovávali objednávky, mohlo by dôjsť napríklad k zdvojeniu objednávky.
PRG (Post / Redirect / Get)– alternatívne riešenie
Toto riešenie opraví predchádzajúci problém s duplicitným odosielaním. Ak totiž klient odošle POST s formulárom, server spracuje dáta a namiesto priameho renderu odpovie HTTP 302/303 redirect na GET endpoint (napr. redirect:/greet?name=… alebo redirect:/result). Prehliadač automaticky vykoná GET na túto novú URL a zobrazí výslednú stránku. Opakovaný refresh stránky znovu načíta GET (bez znovu-odosielania POST).
Pre zohľadnenie alternatívneho riešenia upravíme súbor HomeController.java nasledovne:
package com.example.springboottutorial.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.util.UriUtils;
import java.nio.charset.StandardCharsets;
@Controller
public class HomeController {
@GetMapping("/")
public String index() {
// Vráti šablónu src/main/resources/templates/index.html
return "index";
}
@PostMapping("/greet")
public String greetAndRedirect(@RequestParam(name = "name", required = false) String name) {
if (name == null || name.trim().isEmpty()) {
name = "neznámy používateľ";
}
// Redirect s parametrom (vyhne sa opätovnému POST pri refresh)
return "redirect:/greet?name=" + UriUtils.encodeQueryParam(name.trim(), StandardCharsets.UTF_8);
}
@GetMapping("/greet")
public String showGreeting(@RequestParam(name = "name", required = false) String name, Model model) {
if (name == null || name.isBlank()) {
name = "neznámy používateľ";
}
model.addAttribute("name", name);
return "greeting";
}
}
Umiestni HTML súbory (index.html a greeting.html) do src/main/resources/templates.
index.html
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Spring Boot Tutorial — Zadaj meno</title>
<link rel="stylesheet" th:href="@{/css/styles.css}" />
</head>
<body class="page">
<main class="card">
<header class="card-header">
<h1>Ako sa voláš?</h1>
<p class="subtitle">Zadaj svoje meno a pokračuj do sveta Spring Boot.</p>
</header>
<form th:action="@{/greet}" method="post" class="form">
<label for="name" class="label">Meno:</label>
<input type="text" id="name" name="name" placeholder="Tvoje meno" class="input" autofocus />
<button type="submit" class="btn">Odoslať</button>
</form>
</main>
</body>
</html>
greeting.html
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Vitaj</title>
<link rel="stylesheet" th:href="@{/css/styles.css}" />
</head>
<body class="page">
<main class="card">
<header class="card-header">
<h1 th:text="'Vitaj do sveta Spring Boot, ' + ${name} + '!'">Vitaj do sveta Spring Boot!</h1>
</header>
<section class="result">
<p class="message">Toto je tvoja prvá Spring Boot webaplikácia.</p>
<a th:href="@{/}" class="link-btn">Späť</a>
</section>
</main>
</body>
</html>
Poznámka ku bezpečnosti: Thymeleaf pri th:text automaticky escapuje HTML, takže zobrazenie používateľského vstupu je bezpečnejšie (predchádza XSS). Vyhni sa th:utext, pokiaľ explicitne nechceš injektovať neescapovaný HTML obsah.
Bez vizuálnej úpravy by obe stránky vyzerali veľmi jednoducho:


Preto, aby sme zlepšili grafickú stránku, budeme musieť oba formuláre naštýlovať.
Umiestni CSS súbor (styles.css) do src/main/resources/static/css.
styles.css
/* ---------- Reset a základ ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
background: radial-gradient(circle at 10% 10%, #4e7fff 0%, #1b284b 45%, #0f1724 100%);
color: #0b1220;
display: flex;
align-items: center;
justify-content: center;
padding: 28px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ---------- Page load animation (vnímaný prechod) ---------- */
.page {
/* pri načítaní sa použije plynulý vstup: fade + slide-up */
opacity: 0;
transform: translateY(12px) scale(0.997);
animation: pageIn 600ms cubic-bezier(.16,.8,.38,1) forwards;
}
@keyframes pageIn {
from { opacity: 0; transform: translateY(12px) scale(0.997); filter: blur(6px); }
to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}
/* ---------- Card / dialog container ---------- */
.card {
width: 100%;
max-width: 520px;
background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(250,250,252,0.96));
border-radius: 14px;
padding: 34px;
box-shadow: 0 12px 40px rgba(8,15,30,0.45);
border: 1px solid rgba(20,27,44,0.06);
overflow: hidden;
}
/* Header inside card */
.card-header {
text-align: left;
margin-bottom: 18px;
}
.card-header h1 {
font-size: 1.5rem;
color: #0b1220;
margin-bottom: 6px;
font-weight: 700;
letter-spacing: -0.2px;
}
.subtitle {
color: #475569;
font-size: 0.95rem;
}
/* ---------- Form layout (rozostupy, vstupy) ---------- */
.form {
display: flex;
flex-direction: column;
gap: 6px;
}
/* label */
.label {
font-weight: 600;
color: #0b1220;
margin-bottom: 8px;
font-size: 0.95rem;
}
/* input (dostatocny padding a vzdialenost od tlacidla) */
.input {
width: 100%;
padding: 14px 16px;
font-size: 1rem;
border-radius: 10px;
border: 1px solid rgba(15, 23, 42, 0.08);
background: #fff;
color: #0b1220;
transition: box-shadow .22s ease, border-color .22s ease, transform .12s ease;
margin-bottom: 28px; /* VYSSIE rozostupy oproti tlacidlu */
}
/* focus */
.input:focus {
outline: none;
border-color: rgba(79,70,229,0.9); /* jemny fialovo-modry accent */
box-shadow: 0 6px 20px rgba(79,70,229,0.08);
transform: translateY(-1px);
}
/* placeholder styling */
.input::placeholder {
color: #94a3b8;
}
/* ---------- Tlačidlo (vacsie, profesionalne) ---------- */
.btn {
display: inline-block;
width: 100%;
padding: 14px 16px;
font-size: 1rem;
font-weight: 700;
border-radius: 10px;
background: linear-gradient(90deg, #2563eb 0%, #60a5fa 100%);
color: #fff;
border: none;
cursor: pointer;
box-shadow: 0 8px 20px rgba(37,99,235,0.18), inset 0 -1px 0 rgba(255,255,255,0.06);
transition: transform .14s ease, box-shadow .14s ease, filter .14s ease;
}
/* hover, active */
.btn:hover { transform: translateY(-3px); filter: brightness(1.03); }
.btn:active { transform: translateY(-1px) scale(0.997); }
/* keyboard focus (accessibility) */
.btn:focus {
outline: 3px solid rgba(59,130,246,0.18);
outline-offset: 3px;
}
/* ---------- Result area (greeting) ---------- */
.result {
margin-top: 10px;
display: flex;
flex-direction: column;
gap: 14px;
align-items: flex-start;
}
/* personalized message */
.message {
color: #0b1220;
font-size: 1rem;
line-height: 1.45;
}
/* link-style button for "Späť" (vyzera ako tlacidlo, ale link) */
.link-btn {
display: inline-block;
padding: 10px 14px;
background: transparent;
color: #2563eb;
border-radius: 8px;
border: 1px solid rgba(37,99,235,0.12);
text-decoration: none;
font-weight: 700;
transition: background .12s ease, color .12s ease, transform .12s ease;
}
.link-btn:hover {
background: rgba(37,99,235,0.06);
transform: translateY(-2px);
}
/* ---------- Responsivita ---------- */
@media (max-width: 520px) {
.card { padding: 22px; border-radius: 12px; }
.input { padding: 12px; margin-bottom: 22px; }
.btn { padding: 12px; font-size: 0.98rem; }
}
/* ---------- Optional: jemne popup animacie na elementy ---------- */
.card-header, .form, .result {
transform-origin: top center;
animation: contentIn 420ms cubic-bezier(.2,.9,.3,1);
}
@keyframes contentIn {
from { opacity: 0; transform: translateY(8px) scale(0.998); }
to { opacity: 1; transform: translateY(0) scale(1); }
}


Pripravili sme pre teba súbory so spomínaným príkladom vo forme zdrojového kódu, ktorý si môžeš vyskúšať. Stiahni si kód Spring Boot Tutorial tu.
Spring Boot ti umožňuje sústrediť sa na logiku aplikácie a nie na zložité nastavenia. To je jeho najväčšia výhoda. V priebehu niekoľkých minút dokážeš rozbehnúť plnohodnotnú webovú aplikáciu s vlastným serverom, formulárom aj dynamickým obsahom.
Práve vďaka automatickej konfigurácii, predpripraveným závislostiam a prehľadnej štruktúre projektu patrí Spring Boot medzi najlepšie nástroje pre začiatočníkov aj profesionálov. Umožňuje rýchlo experimentovať, testovať nápady a postupne prechádzať k zložitejším aplikáciám bez nutnosti meniť technológiu.
Ak chceš pokračovať ďalej, prirodzeným ďalším krokom je naučiť sa pracovať s databázou, REST API a autentifikáciou používateľov. S rovnakým základom z nášho Spring boot tutoriálu dokážeš postupne postaviť aj plnohodnotnú produkčnú aplikáciu.
Súvisiace články