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”.
Spring Boot – nowa era
Spring Boot, który oficjalnie wystartował w kwietniu 2014, wprowadza radykalnie inne podejście:
Kluczowe innowacje Spring Boot:
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
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:
Starter | Zawiera | Zastosowanie |
---|---|---|
spring-boot-starter-web | Spring MVC, Tomcat, Jackson | Aplikacje web/REST API |
spring-boot-starter-data-jpa | Hibernate, Spring Data JPA | Praca z bazami danych |
spring-boot-starter-security | Spring Security | Uwierzytelnianie i autoryzacja |
spring-boot-starter-test | JUnit, Mockito, AssertJ | Testy jednostkowe i integracyjne |
Przykład pom.xml
org.springframework.boot spring-boot-starter-web
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.
Embedded Server – koniec z WAR
Jedna z największych zmian to rezygnacja z tradycyjnych serwerów aplikacji:
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"}}
Kiedy używać Spring Boot vs tradycyjny Spring?
Scenario | Spring Boot | Tradycyjny 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ć |
Najczęstsze problemy początkujących
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.
Nie – możesz wyłączyć dowolną auto-konfigurację i skonfigurować komponenty ręcznie. Spring Boot daje domyślne ustawienia, ale nie blokuje customizacji.
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.
Tak! Netflix, Alibaba i setki firm używa Spring Boot w produkcji. Actuator endpoints i embedded server są production-ready.
Embedded Tomcat ma identyczną wydajność co standalone. Często nawet lepszą bo jest zoptymalizowany pod konkretną aplikację.
Użyj –debug flag lub debug=true w properties. Spring Boot pokaże dokładny raport tego co zostało skonfigurowane i dlaczego.
Tak! Spring Boot ma oficjalny plugin dla Gradle. Gradle nawet lepiej radzi sobie z dependency management niż Maven.
Przydatne zasoby:
- Spring Initializr – generator projektów Spring Boot
- Spring Boot Reference Guide – oficjalna dokumentacja
- Spring Boot na GitHub – kod źródłowy i przykłady
- Spring Guides – praktyczne tutoriale
- Spring Boot – historia powstania
🚀 Zadanie dla Ciebie
Stwórz aplikację Spring Boot która:
- Ma REST endpoint /api/users zwracający listę użytkowników
- Używa H2 in-memory database z kilkoma przykładowymi danymi
- Má enabled Actuator endpoints dla health check
- 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!