Nel panorama dello sviluppo Java Enterprise, la scelta del framework è fondamentale. Sebbene molti usino i termini in modo intercambiabile, Spring e Spring Boot non sono la stessa cosa. Con l'avvento di Spring Boot 3, le differenze sono diventate ancora più marcate, introducendo standard moderni che ogni sviluppatore deve conoscere.
Spring è un framework open source leggero nato per semplificare lo sviluppo J2EE (ora Jakarta EE). Il suo cuore pulsante è la Dependency Injection (DI) e l'Inversion of Control (IoC), che permettono di creare applicazioni modulari e testabili.
Spring offre moduli pronti all'uso come:
Spring MVC: Per le applicazioni web.
Spring Security: Per la protezione dei dati e degli accessi.
Spring Data JDBC/JPA: Per semplificare l'interazione con i database.
Spring AOP: Per la programmazione orientata agli aspetti.
Nota Tecnica: Nonostante la sua potenza, Spring "puro" richiede una configurazione manuale verbosa (file XML o classi di configurazione complesse) che può rallentare l'avvio di un progetto.
Spring Boot è un'estensione di Spring progettata per rendere le applicazioni "ready to run". Con la versione 3.x, Spring Boot ha abbracciato il futuro richiedendo come requisito minimo Java 17 e passando alle API di Jakarta EE 10.
I tre pilastri di Spring Boot sono:
Auto-configurazione: Configura automaticamente i bean in base alle dipendenze trovate nel classpath.
Starter Dependencies: Aggrega le librerie comuni in un'unica dipendenza (es. spring-boot-starter-web).
Server Incorporato: Include Tomcat, Jetty o Undertow direttamente nel file JAR, eliminando la necessità di installare server esterni.
In Spring tradizionale, dovevi dichiarare ogni singola libreria e gestirne le versioni compatibili.
Esempio Spring (Legacy):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.x</version>
</dependency>
Esempio Spring Boot 3: Basta un solo "starter" che gestisce internamente la compatibilità di tutte le librerie.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Uno dei cambiamenti più grandi di Spring Boot 3 è il passaggio al namespace Jakarta EE. Se prima usavi javax.servlet, ora dovrai aggiornare il codice a jakarta.servlet. Questo è fondamentale per la sicurezza e le performance moderne.
Mentre Spring MVC usava spesso i file JSP (tecnologia ormai datata e limitata), Spring Boot consiglia motori di template moderni come Thymeleaf.
Configurazione moderna in Spring Boot: Non serve più definire un ViewResolver complesso come in passato. Spring Boot riconosce automaticamente la cartella src/main/resources/templates.
@Controller
public class SampleController {
@GetMapping("/sample")
public String showForm(Model model) {
model.addAttribute("messaggio", "Benvenuti in Spring Boot 3!");
return "sample"; // Cerca sample.html in /templates
}
}
Richiede un file web.xml o un inizializzatore della Servlet. L'applicazione deve essere impacchettata come file .WAR e copiata manualmente dentro un server come Apache Tomcat.
L'applicazione parte da un semplice metodo main. Il server è dentro l'applicazione stessa.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Vantaggio/Performance: Spring Boot 3 supporta nativamente GraalVM, permettendo di trasformare l'app in un binario nativo che si avvia in pochi millisecondi e consuma pochissima RAM.
| Caratteristica | Spring Framework | Spring Boot 3 |
| Java Version | Supporta versioni vecchie | Minimo Java 17 |
| Namespace | javax.* |
jakarta.* |
| Configurazione | Manuale (XML o Java Config) | Automatica (Opinionated) |
| Server | Esterno (Tomcat, Wildfly) | Incorporato (Fat JAR) |
| Deployment | Più complesso (WAR) | Semplice (JAR o Native Image) |
Non c'è competizione: Spring Boot 3 è lo standard attuale. Mentre Spring offre la flessibilità di base, Spring Boot elimina il "boilerplate code" e permette di concentrarsi solo sulla logica di business. Se stai iniziando un nuovo progetto o vuoi recuperare traffico sul tuo blog tecnico, puntare sulle architetture moderne basate su Java 17+ e Spring Boot 3 è l'unica strada percorribile.