𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁 𝗡𝗼𝗻 𝗲̀ 𝘀𝗼𝗹𝗼 𝘂𝗻 𝘀𝗲𝗿𝘃𝗲𝗿 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜

Molti sviluppatori pensano che Spring Boot serva solo dati JSON. Credono di dover ospitare un'app React o Vue su un server separato come Vercel o AWS.

Questo è un errore.

Spring Boot include un server Apache Tomcat embedded. Ciò significa che puoi costruire applicazioni full-stack all'interno di un singolo file JAR.

L'utilizzo di un singolo file JAR offre tre vantaggi principali:

  • Zero problemi di CORS: il tuo frontend e il tuo backend utilizzano la stessa porta e lo stesso dominio.
  • Costi inferiori: non hai bisogno di un server Node.js separato. Un singolo server Linux o un container Docker esegue tutto.
  • Deployment semplice: un unico processo di build gestisce sia la tua UI che il tuo server.

Ecco quattro modi per includere la tua UI in Spring Boot:

  1. Server-Side Templating (SSR) Usa Thymeleaf per renderizzare l'HTML sul server. Aggiungi la dipendenza starter al tuo file Maven e usa un Controller per restituire i template HTML. È semplice e veloce.

  2. Vaadin Vaadin ti permette di costruire moderne web app usando solo Java. Non devi scrivere JavaScript o CSS. Vaadin gestisce i componenti React in background e li serve tramite Tomcat. Questo è ideale per gli sviluppatori Java che vogliono evitare la complessità del frontend.

  3. JSF (JavaServer Faces) JSF è una scelta solida per i sistemi enterprise. Puoi combinarlo con PrimeFaces o BootsFaces per ottenere componenti di alta qualità. Devi solo registrare il FacesServlet nella tua configurazione Spring.

  4. Lo stile Indie Hacker (Integrazione SPA) Puoi costruire un'app React o Vite e spostare i file di build nella cartella src/main/resources/static.

Per automatizzare questo processo, usa il frontend-maven-plugin. Questo esegue npm install e npm build durante la build di Maven.

Un consiglio per gli utenti React: se usi React Router, crea un Controller per reindirizzare i percorsi sconosciuti a index.html. Questo evita errori 404 quando gli utenti aggiornano la pagina.

Smetti di cercare server extra. Sfrutta la potenza del tuo Tomcat embedded.

Fonte: https://dev.to/ganigurgah/spring-boot-is-not-just-a-rest-api-server-50hh