Spring Boot – rewolucja w świecie Spring

TL;DR: Spring Boot to rewolucja – zamiast dni konfiguracji XML, masz działającą aplikację w 5 minut. Auto-konfiguracja, wbudowany Tomcat i starter dependencies eliminują 90% boilerplate kodu z tradycyjnego Spring.

Dlaczego Spring Boot zmienia wszystko?

Tradycyjny Spring wymagał setek linii XML i dni konfiguracji dla prostej aplikacji web. Spring Boot wprowadza „convention over configuration” – inteligentne domyślne ustawienia które działają od razu. To różnica między budowaniem domu od fundamentów a wprowadzeniem się do gotowego mieszkania.

Co się nauczysz:

  • Czym Spring Boot różni się od tradycyjnego Spring Framework
  • Jak działa auto-konfiguracja i dlaczego to przełom
  • Co to są Spring Boot Starters i jak oszczędzają czas
  • Jak stworzyć pierwszą aplikację Spring Boot w 5 minut
  • Jakie są wbudowane serwery i monitoring
  • Kiedy używać Spring Boot vs tradycyjny Spring

Wymagania wstępne:

Poziom: Podstawy – dla junior Java developerów

Potrzebujesz: Podstawowa znajomość Java, Spring Framework, Maven/Gradle

Doświadczenie: 6-18 miesięcy programowania w Java

Czas: 45-60 minut

Problem z tradycyjnym Spring

Żeby zrozumieć rewolucję Spring Boot, spójrzmy na to co było wcześniej. Prosta aplikacja web w Spring 4.x wymagała:




    MyApp
    
    
        dispatcher
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            /WEB-INF/spring-config.xml
        
        1
    
    
    
        dispatcher
        /
    

Plus jeszcze spring-config.xml z dziesiątkami linii konfiguracji, applicationContext.xml, i co najmniej 3-4 inne pliki XML. Rezultat? 200+ linii konfiguracji żeby wyświetlić „Hello World”.

Pułapka: W tradycyjnym Spring 80% czasu poświęcałeś na konfigurację, 20% na faktyczną logikę biznesową. Spring Boot odwraca te proporcje.

Spring Boot – nowa era

Spring Boot, który oficjalnie wystartował w kwietniu 2014, wprowadza radykalnie inne podejście:

Tradycyjny Spring to jak budowanie samochodu od silnika. Spring Boot to Tesla – wsiadasz i jeździsz, wszystko jest już skonfigurowane i działa.

Kluczowe innowacje Spring Boot:

Auto-konfiguracja – Spring Boot automatycznie konfiguruje komponenty na podstawie zależności w classpath. Znajdzie H2? Skonfiguruje DataSource. Znajdzie Spring MVC? Przygotuje DispatcherServlet.
Starter Dependencies – gotowe zestawy zależności. Zamiast ręcznego dobierania 15 bibliotek, dodajesz jeden „spring-boot-starter-web”.
Embedded Server – Tomcat, Jetty lub Undertow wbudowane w JAR. Nie potrzebujesz zewnętrznego serwera aplikacji.

Pierwsza aplikacja Spring Boot

Stworzenie aplikacji Spring Boot w 2016 roku jest śmiesznie proste. Idź na start.spring.io (Spring Initializr) i wygeneruj projekt w 30 sekund.

Minimalna aplikacja

@SpringBootApplication
public class MyApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

To wszystko! @SpringBootApplication to kombinacja trzech adnotacji:

  • @Configuration – klasa konfiguracyjna
  • @EnableAutoConfiguration – włącza auto-konfigurację
  • @ComponentScan – skanuje komponenty w pakiecie

Pierwszy kontroler

@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String hello() {
        return "Hello from Spring Boot!";
    }
}

Uruchom mvn spring-boot:run i masz działającą aplikację na http://localhost:8080/hello

Pro tip: Spring Boot używa portu 8080 domyślnie, ma wbudowany Tomcat i automatycznie reloaduje zmiany w trybie deweloperskim.

Spring Boot Starters – magia zależności

Starters to jedna z najważniejszych innowacji Spring Boot. Zamiast ręcznego dobierania kompatybilnych wersji bibliotek, masz gotowe zestawy:

StarterZawieraZastosowanie
spring-boot-starter-webSpring MVC, Tomcat, JacksonAplikacje web/REST API
spring-boot-starter-data-jpaHibernate, Spring Data JPAPraca z bazami danych
spring-boot-starter-securitySpring SecurityUwierzytelnianie i autoryzacja
spring-boot-starter-testJUnit, Mockito, AssertJTesty jednostkowe i integracyjne

Przykład pom.xml


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    


Uwaga: Spring Boot 1.3 (aktualna w styczniu 2016) używa Spring Framework 4.2, Hibernate 4.3 i Tomcat 8. Wszystkie wersje są przetestowane i kompatybilne.

Auto-konfiguracja w praktyce

Auto-konfiguracja to prawdziwa magia Spring Boot. Działa na zasadzie „jeśli znajdę X w classpath, skonfiguruję Y”:

// Spring Boot automatycznie wykrywa:

// H2 database w classpath? 
// → Tworzy DataSource, EntityManager, TransactionManager

// Jackson w classpath? 
// → Konfiguruje JSON serialization dla REST

// Thymeleaf w classpath?
// → Konfiguruje template engine z domyślnymi ustawieniami

// Spring Security w classpath?
// → Włącza basic authentication na wszystkie endpointy

Jak sprawdzić co zostało skonfigurowane?

# Uruchom z flagą debug
java -jar myapp.jar --debug

# Albo w application.properties:
debug=true

Zobaczysz dokładny raport tego co Spring Boot skonfigurował automatycznie i dlaczego.

Spring Boot ma ponad 100 klas auto-konfiguracji pokrywających najpopularniejsze use-cases. Od baz danych, przez messaging, po monitoring.

Embedded Server – koniec z WAR

Jedna z największych zmian to rezygnacja z tradycyjnych serwerów aplikacji:

Tradycyjnie: Budujesz WAR → Deployujesz na Tomcat/JBoss → Konfigrujesz serwer → Modlisz się żeby działało

Spring Boot: Budujesz JAR → java -jar myapp.jar → Gotowe!

# Tradycyjny deployment
cp myapp.war /opt/tomcat/webapps/
systemctl restart tomcat
# Sprawdź logi, debuguj problemy...

# Spring Boot deployment  
java -jar myapp.jar
# Działa!

Zalety embedded server:

  • Konsystentne środowisko – dev, test i prod używają tego samego Tomcata
  • Łatwiejszy deployment – jeden JAR zawiera wszystko
  • Microservices-ready – każdy serwis ma własny embedded server
  • Szybsze starty – brak overhead zewnętrznego serwera

Production-ready features

Spring Boot Actuator daje gotowe endpointy do monitoringu aplikacji:

# Health check
GET /health
{"status": "UP", "diskSpace": {"status": "UP"}}

# Metryki aplikacji  
GET /metrics
{"mem": 512000, "processors": 4, "uptime": 1200000}

# Informacje o aplikacji
GET /info
{"app": {"name": "myapp", "version": "1.0.0"}}
Pro tip: Actuator endpoints są idealne do integracji z narzędziami monitoring jak Nagios czy New Relic, które dopiero zyskują popularność w 2016.

Kiedy używać Spring Boot vs tradycyjny Spring?

ScenarioSpring BootTradycyjny Spring
Nowa aplikacja✅ Zawsze❌ Niepotrzebny overhead
Microservices✅ Idealny❌ Za dużo konfiguracji
Legacy system⚠️ Ostrożnie✅ Lepsza kontrola
Bardzo specyficzne wymagania⚠️ Może być ograniczający✅ Pełna kontrola
Zespół junior/średni✅ Mniej błędów❌ Łatwo się pogubić
Typowy błąd: próba użycia Spring Boot z istniejącym skomplikowanym XML config. Lepiej migrować stopniowo albo zostać przy tradycyjnym Spring.

Najczęstsze problemy początkujących

Pułapka 1: @SpringBootApplication musi być w root package – inaczej component scan nie znajdzie kontrolerów.
Pułapka 2: Conflicting auto-konfiguracja. Jeśli manulaznie konfigurujesz DataSource, wyłącz auto-config: @EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
Pułapka 3: Port 8080 zajęty. Zmień w application.properties: server.port=8081
Czy Spring Boot zastąpi tradycyjny Spring?

Spring Boot to warstwa nad Spring Framework, nie zamiennik. Używa tych samych komponentów, tylko konfiguruje je automatycznie. Pod spodem nadal masz pełny Spring.

Czy auto-konfiguracja nie ogranicza kontroli?

Nie – możesz wyłączyć dowolną auto-konfigurację i skonfigurować komponenty ręcznie. Spring Boot daje domyślne ustawienia, ale nie blokuje customizacji.

Jakie są wymagania systemowe Spring Boot?

Java 7+ (rekomendowana Java 8), Maven 3.2+ lub Gradle 1.12+. Spring Boot 1.3 działa na większości systemów z 2016 roku.

Czy Spring Boot jest gotowy na produkcję?

Tak! Netflix, Alibaba i setki firm używa Spring Boot w produkcji. Actuator endpoints i embedded server są production-ready.

Co z wydajnością embedded serwera?

Embedded Tomcat ma identyczną wydajność co standalone. Często nawet lepszą bo jest zoptymalizowany pod konkretną aplikację.

Jak debugować problemy z auto-konfiguracją?

Użyj –debug flag lub debug=true w properties. Spring Boot pokaże dokładny raport tego co zostało skonfigurowane i dlaczego.

Czy mogę używać Spring Boot z Gradle?

Tak! Spring Boot ma oficjalny plugin dla Gradle. Gradle nawet lepiej radzi sobie z dependency management niż Maven.

Przydatne zasoby:

🚀 Zadanie dla Ciebie

Stwórz aplikację Spring Boot która:

  1. Ma REST endpoint /api/users zwracający listę użytkowników
  2. Używa H2 in-memory database z kilkoma przykładowymi danymi
  3. Má enabled Actuator endpoints dla health check
  4. Generuje JSON response z informacjami o użytkownikach

Bonus: skonfiguruj custom port (np. 8090) i custom application name w /info endpoint.

Podziel się swoim kodem w komentarzach!

Czy już testujesz Spring Boot w swoich projektach? Jakie największe korzyści zauważyłeś w porównaniu do tradycyjnego Spring? Podziel się doświadczeniami w komentarzach!

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry