{"id":7136,"date":"2019-09-17T10:41:35","date_gmt":"2019-09-17T08:41:35","guid":{"rendered":"https:\/\/www.addlance.com\/blog\/?p=7136"},"modified":"2021-02-17T23:32:28","modified_gmt":"2021-02-17T22:32:28","slug":"codice-java","status":"publish","type":"post","link":"https:\/\/seven.addlance.com\/beta\/blog\/codice-java\/","title":{"rendered":"Come fare una applicazione api Rest con codice Java usando Spring Boot"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignright wp-image-7141 size-medium\" title=\"codice java app api rest\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-300x200.jpg\" alt=\"codice java app api rest\" width=\"300\" height=\"200\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-300x200.jpg 300w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-1024x683.jpg 1024w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-768x512.jpg 768w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-1536x1025.jpg 1536w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-610x407.jpg 610w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST-1080x721.jpg 1080w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-app-api-REST.jpg 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>In questo articolo vedremo come creare una semplice web application con codice Java, utilizzando Spring Boot come <em>framework<\/em> per lo sviluppo del <em>back-end<\/em> e dei servizi REST.<\/p>\n<p><!--more--><\/p>\n<h3>Che cos&#8217;\u00e8 Spring Boot e la procedura di installazione<\/h3>\n<p>Spring Boot \u00e8 un <em>framework<\/em> per lo sviluppo di applicazioni web basate su codice Java (precisamente su stack Java) che offre un ulteriore livello di astrazione rispetto all&#8217;utilizzo di Spring Framework. Soprattutto in termini di <em>setup<\/em> e configurazione del progetto e di gestione delle dipendenze. In questo modo, si ottiene una <em>riduzione ulteriore dei tempi necessari<\/em> per l&#8217;implementazione e la distribuzione delle nostre applicazioni.<\/p>\n<p style=\"text-align: center;\">Leggi anche <a href=\"https:\/\/www.addlance.com\/blog\/macchina-virtuale-virtualizzazione-vantaggi\/\">Sistemi di virtualizzazione, i diversi approcci e i vantaggi<\/a><\/p>\n<p>Spring Boot \u00e8 provvisto di un suo <strong>ambiente di sviluppo dedicato<\/strong> chiamato &#8220;Spring Tool Suite&#8221; che \u00e8 possibile scaricare dal sito <a href=\"https:\/\/spring.io\/tools\">https:\/\/spring.io\/tools<\/a>. Una volta effettuato il <em>download,<\/em> basta seguire la <strong>procedura di installazione.<\/strong><br \/>\nApri il programma e seleziona dal men\u00f9 la voce \u201cFile\u201d -&gt; \u201cNew\u201d -&gt;\u201dOther\u201d-&gt; \u201cSpring Starter Project\u201d. Poi, inserisci il nome del progetto, ad esempio &#8220;SpringBootAddlanceEx1&#8221; e le sue caratteristiche.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-7137\" title=\"Spring Boot codice Java\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/spring-boot-codice-java.png\" alt=\"Spring Boot codice Java\" width=\"1024\" height=\"1149\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/spring-boot-codice-java.png 597w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/spring-boot-codice-java-267x300.png 267w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><br \/>\nNel passaggio successivo scegli quali moduli &#8220;starters&#8221; vuoi inizialmente aggiungere come dipendenze. In particolare, se vuoi che il tuo servizio risponda ad una semplice chiamata GET, includi nel progetto il modulo <strong>Web <\/strong>che aggiunge una serie di pacchetti &#8220;base&#8221; necessari per lo sviluppo di una <em>web application<\/em> basata su Spring (spring-web, spring-mvc, jackson, ecc).<\/p>\n<p>Se hai seguito fino alla fine questo processo (peraltro gi\u00e0 guidato), avrai creato creato lo scheletro di un&#8217;applicazione in codice Java con la struttura indicata in figura.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-7138 alignleft\" title=\"codice java web app struttura\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/codice-Java-web-app-struttura.png\" alt=\"codice java web app struttura\" width=\"300\" height=\"312\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-web-app-struttura.png 342w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/codice-Java-web-app-struttura-288x300.png 288w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><br \/>\nCome puoi vedere, nel progetto sono state create:<\/p>\n<ul>\n<li>La classe <strong>SpringBootAddlanceEx1Application.java<\/strong> che rappresenta il punto di ingresso della tua applicazione<\/li>\n<li>Le cartelle static e templates sotto al folder delle risorse src\/main\/resources<\/li>\n<li>Un file properties<\/li>\n<\/ul>\n<p>Se apri la classe SpringBootAddlanceEx1Application.java vedrai che il suo contenuto \u00e8 il seguente:<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>package info.alessandrotesta.esempi;<\/strong><\/p>\n<p><strong>import org.springframework.boot.SpringApplication;<\/strong><\/p>\n<p><strong>import org.springframework.boot.autoconfigure.SpringBootApplication;<\/strong><\/p>\n<p><strong>@SpringBootApplication<\/strong><\/p>\n<p><strong>public class SpringBootAddlanceEx1Application {<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 public static void main(String[] args) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SpringApplication.run(SpringBootAddlanceEx1Application.class, args);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Spring Boot permette che le app utilizzino la configurazione automatica, la scansione dei componenti e siano in grado di definire una configurazione aggiuntiva nella loro &#8220;classe di applicazione&#8221;. \u00c8 possibile utilizzare un&#8217;unica annotazione <strong>@SpringBootApplication<\/strong> per abilitare queste tre funzionalit\u00e0, ovvero:<\/p>\n<p><strong>@EnableAutoConfiguration<\/strong>: abilita il meccanismo di configurazione automatica di Spring Boot<br \/>\n<strong>@ComponentScan<\/strong>: abilita la scansione @Component sul pacchetto in cui si trova l&#8217;applicazione<br \/>\n<strong>@Configurazione<\/strong>: consente di registrare bean extra nel contesto o importare classi di configurazione aggiuntive<\/p>\n<p>&nbsp;<\/p>\n<p>Il file pom.xml generato dalla procedura contiene le dipendenze del modulo Web richiesto:<\/p>\n<p><strong>&lt;groupId&gt;info.alessandrotesta.esempi&lt;\/groupId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;SpringBootAddlanceEx1&lt;\/artifactId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;name&gt;SpringBootAddlanceEx1&lt;\/name&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;description&gt;Demo project for Spring Boot&lt;\/description&gt;<\/strong><\/p>\n<p><strong> \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 &lt;properties&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;java.version&gt;1.8&lt;\/java.version&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/properties&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependencies&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependency&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;<\/strong><\/p>\n<p><strong> \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 &lt;dependency&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;scope&gt;test&lt;\/scope&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependencies&gt;<\/strong><\/p>\n<p><strong>\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 &lt;build&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;plugins&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;plugin&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/plugin&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/plugins&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/build&gt;<\/strong><\/p>\n<p><strong>\u00a0 <\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong><\/p>\n<p>Di seguito vedrai come il <em>framework<\/em> gestisce le chiamate statiche direttamente e come invece gestisce le chiamate attraverso un <em>controller<\/em>. Potrai quindi creare la tua risorsa statica<strong>, <\/strong>sar\u00e0 sufficiente spostarti nel folder &#8220;static&#8221; e creare un nuovo file HTML che verr\u00e0 chiamato &#8220;index.html&#8221; con una struttura minimale.<\/p>\n<p><strong>&lt;html&gt;<\/strong><\/p>\n<p><strong>&lt;head&gt;<\/strong><\/p>\n<p><strong>&lt;\/head&gt;<\/strong><\/p>\n<p><strong>&lt;body&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;h1&gt;SpringBootAddlanceEx1&lt;\/h1&gt;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Esercizio n.1 chiamata statica<\/strong><\/p>\n<p><strong>&lt;\/body&gt;<\/strong><\/p>\n<p><strong>&lt;\/html&gt;<\/strong><\/p>\n<p>Questa in grassetto sar\u00e0 la risposta statica del tuo servizio.<\/p>\n<p>&nbsp;<\/p>\n<p>A questo punto sarai pronto per scrivere il tuo <em>controller<\/em> che posizionerai in un <em>package<\/em> chiamato &#8220;controllers&#8221; e che creerai all&#8217;interno del progetto. Avr\u00e0 la struttura ereditata dal principale cio\u00e8:<strong> info.alessandrotesta.esempi.controllers<\/strong>. Questo il codice di HomeController.java:<\/p>\n<p>&nbsp;<\/p>\n<p><strong>package info.alessandrotesta.esempi.controllers;<\/strong><\/p>\n<p><strong>import org.springframework.web.bind.annotation.RequestMapping;<\/strong><\/p>\n<p><strong>import org.springframework.web.bind.annotation.RestController;<\/strong><\/p>\n<p><strong>@RestController<\/strong><\/p>\n<p><strong>public class HomeController {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 @RequestMapping(&#8220;\/&#8221;)<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 public String index() {<\/strong><\/p>\n<p><strong> return &#8220;&lt;h1&gt;SpringBootAddlanceEx1&lt;\/h1&gt;\\n&#8221; +<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8221;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Esercizio n.1 &#8211; chiamata controller&#8221;;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 }<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p>Adesso sei pronto per mandare in esecuzione il servizio. Clicca con il tasto destro del mouse sulla classe SpringBootAddlanceEx1Application che, come hai visto, rappresenta il punto di partenza della tua applicazione, seleziona &#8220;Run As&#8221; e poi &#8220;Spring Boot App&#8221;.<\/p>\n<p>L&#8217;applicazione parte utilizzando il server <strong>Tomcat incluso<\/strong> da Spring Boot in esecuzione sulla sua porta di default, la 8080.<\/p>\n<p>Potrai quindi aprire il browser e richiedere la risorsa statica scrivendo<br \/>\n<a href=\"http:\/\/localhost:8080\/index.html\">http:\/\/localhost:8080\/index.html<\/a><br \/>\ned apparir\u00e0 la pagina statica:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-7139 size-medium aligncenter\" title=\"Spring Boot codice java esercizio 1\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-1-300x180.png\" alt=\"Spring Boot codice java esercizio 1\" width=\"300\" height=\"180\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-1-300x180.png 300w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-1-440x264.png 440w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-1.png 453w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>e poi provare la richiesta al <em>controller<\/em> all&#8217;indirizzo<br \/>\n<a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080\/<\/a><br \/>\ned apparir\u00e0 la risposta del <em>controller<\/em>:<\/p>\n<p><img decoding=\"async\" class=\"wp-image-7140 size-medium aligncenter\" title=\"Spring Boot codice java esercizio controller\" src=\"https:\/\/www.addlance.com\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-controller-300x183.png\" alt=\"Spring Boot codice java esercizio controller\" width=\"300\" height=\"183\" srcset=\"https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-controller-300x183.png 300w, https:\/\/seven.addlance.com\/beta\/blog\/wp-content\/uploads\/2019\/09\/Spring-Boot-codice-java-esercizio-controller.png 465w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Ti trovi bene a programmare in codice Java? Ecco vantaggi e svantaggi del framework Spring Boot<\/h2>\n<h3><\/h3>\n<h3>I vantaggi<\/h3>\n<ul>\n<li>Gestione delle dipendenze semplificata e senza conflitti di versione tramite i POM di avvio. Sarai in grado di configurare ed eseguire applicazioni Web e micro-servizi standalone in pochissimo tempo.<\/li>\n<li>Puoi semplicemente assemblare l&#8217;artefatto jar fornito con un server applicazioni <strong>Tomact, Jetty<\/strong> o <strong>Undertow<\/strong> incorporato e l&#8217;applicazione \u00e8 pronta per partire.<\/li>\n<li>Nessuna configurazione basata su XML. Propriet\u00e0 molto semplificate. I bean vengono inizializzati, configurati e cablati automaticamente.<\/li>\n<li><strong>Spring Initializer<\/strong> fornisce un generatore di progetti per renderti produttivo con un certo stack tecnologico sin dall&#8217;inizio. \u00c8 possibile creare un progetto scheletro con supporto Web, accesso ai dati (datastore relazionali e NoSQL), <em>cloud<\/em> o supporto di messaggistica.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\">Leggi anche<a href=\"https:\/\/www.addlance.com\/blog\/servizi-cloud\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Servizi cloud, cosa sono e perch\u00e9 servono<\/a><\/p>\n<h3><\/h3>\n<h3>Gli svantaggi<\/h3>\n<ul>\n<li>Aumento della dimensione binaria di distribuzione con dipendenze non utilizzate.<\/li>\n<li>Perdita del controllo diretto, difficolt\u00e0 a seguire il flusso quando le chiamate entrano in fondo al <em>framework<\/em>.<\/li>\n<li>Spring Boot si adatta bene ai micro servizi. Gli artefatti di Spring Boot possono essere distribuiti direttamente nei contenitori <strong>Docker.<\/strong> In applicazioni di grandi dimensioni e monolitiche \u00e8 meno adatto e soprattutto \u00e8 importante tenere sotto controllo la moltitudine di componenti che vengono inclusi.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><em>Articolo a cura di Alessandro Testa<\/em>    \t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se usi il codice Java per programmare ecco come fare una app api REST usando il framework Spring Boot, con +1 livello di astrazione rispetto a Spring Framework<\/p>\n","protected":false},"author":6,"featured_media":7141,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[17],"tags":[18],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7136"}],"collection":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/comments?post=7136"}],"version-history":[{"count":1,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7136\/revisions"}],"predecessor-version":[{"id":10727,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/posts\/7136\/revisions\/10727"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/media\/7141"}],"wp:attachment":[{"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/media?parent=7136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/categories?post=7136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seven.addlance.com\/beta\/blog\/wp-json\/wp\/v2\/tags?post=7136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}