𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁 𝗡𝗼𝗻 𝗲̀ 𝘀𝗼𝗹𝗼 𝘂𝗻 𝘀𝗲𝗿𝘃𝗲𝗿 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜
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:
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.
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.
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.
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