Postavljanje prvog Spring Boot projekta
O Spring Initializr
Zvanični Spring nudi način Spring Initializr za kreiranje Spring Boot projekata. Adresa je sledeća:
Nakon otvaranja, interfejs izgleda ovako:

Spring Initializr možete posmatrati kao čarobnjaka za inicijalizaciju Spring Boot projekata; on može pomoći programerima da za manje od minuta kreiraju skelet Spring Boot projekta — veoma je foolproof.
Objasnićemo ključne opcije u interfejsu za inicijalizaciju Spring Initializr-a.
Project: način izgradnje projekta; možete izabrati Maven (način instalacije možete videti na linku) i Gradle (skripte za izgradnju pišu se na jeziku poput Groovy ili Kotlin, umesto tradicionalnog XML-a). Codingmore podrazumevano koristi Maven.
Language: razvojni jezik projekta; možete izabrati Java, Kotlin (programski jezik koji je razvio JetBrains i koji radi na JVM-u) ili Groovy (može se koristiti kao skriptni jezik za Java platformu). Podrazumevani Java je sasvim dovoljan.
Spring Boot: verzija Spring Boot-a koju projekat koristi. Podrazumevana verzija je u redu, prilično je stabilna.
Project Metadata: osnovna podešavanja projekta, uključujući ime paketa, način pakovanja, verziju JDK-a itd.
- Group: identifikator organizacije kojoj projekat pripada, na primer top.codingmore;
- Artifact: identifikator projekta, na primer coding-more;
- Name: podrazumevano može ostati u skladu sa Artifact;
- Description: opisne informacije projekta, na primer „Praktični projekat Codingmore (projekat sa razdvojenim frontendom i backendom Spring Boot+Vue)";
- Package name: ime paketa projekta, može se automatski generisati na osnovu Group i Artifact.
- Packaging: način pakovanja projekta; možete izabrati Jar ili War (u eri SSM-a, JavaWeb projekti su se obično pakovali u War i stavljali pod Tomcat). U eri Spring Boot-a podrazumevani Jar je dovoljan, jer Spring Boot može da ugradi servisne kontejnere poput Tomcat, Jetty i Undertow.
- Java: verzija JDK-a koju projekat koristi; izaberite 11 ili 8 (Codingmore koristi najstabilniji Java 8).
- Dependencies: zavisnosti i starteri potrebni projektu. Ako ništa ne izaberete, podrazumevano postoje samo modul jezgra spring-boot-starter i testni modul spring-boot-starter-test.
U redu, zatim ćemo pomoću Spring Initializr-a inicijalizovati Web projekat: Project biramo Maven, Spring Boot biramo 2.6.1, Java biramo JDK 8, a Dependencies biramo „Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container."

To nagoveštava da ćemo koristiti SpringMVC i Tomcat kao podrazumevani server za razvoj Web projekta.
Zatim kliknite na dugme „generate" na dnu i generisaće se arhiva inicijalnog Spring Boot projekta.

Ako koristite Intellij IDEA Ultimate (flagship) izdanje, možete direktno kreirati novi Spring Boot projekat iz Intellij IDEA.

Analiza strukture Spring Boot projekta
Otpakujte arhivu i uvezite je u Intellij IDEA, pa možete videti strukturu direktorijuma Spring Boot projekta.

Možete koristiti komandu tree -CfL 3 da prikažete sadržaj direktorijuma u obliku stabla:

- src/main/java je razvojni direktorijum projekta; poslovni kod piše se ovde.
- src/main/resources je direktorijum konfiguracionih fajlova; statički fajlovi, fajlovi šablona i konfiguracioni fajlovi se nalaze ovde.
- Poddirektorijum static koristi se za čuvanje statičkih resursnih fajlova, na primer JS, CSS, slike itd.
- Poddirektorijum templates koristi se za čuvanje fajlova šablona, na primer thymeleaf i freemarker fajlove.
- src/test/java je direktorijum fajlova testnih klasa.
- pom.xml služi za upravljanje zavisnostima i izgradnjom projekta.
Kako pokrenuti/deploj-ovati Spring Boot projekat
Pri prvom pokretanju, ja lično imam naviku da u main klasi kliknem desnim klikom i iz iskačućeg menija izaberem „run ... main()" da je pokrenem.

Nakon oko 2,5 s izgradnje, projekat se uspešno pokrenuo; u logovima se vidi da Web projekat kao kontejner koristi Tomcat, podrazumevani port je 8080, a korena putanja je prazna.

Ovo je mnogo manje stresa od tradicionalnih Web projekata — ne treba pakovati u war, niti stavljati war paket u Tomcat-ov webapp direktorijum pre pokretanja.
A ako želimo projekat da zapakujemo u jar i stavimo na server, te ga pokrenemo u obliku java -jar xxx.jar, kako to da uradimo?
Otvorite Terminal i izvršite komandu mvn clean package, pa sačekajte rezultat pakovanja.

Pošto smo pri inicijalizaciji projekta izabrali Maven kao način izgradnje, fajl pom.xml uvešće plugin spring-boot-maven-plugin.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>Zato možemo iskoristiti Maven komandu da završimo pakovanje projekta; nakon pakovanja, uđite u direktorijum target i videćete zapakovani jar.

Pomoću terminalnog alata Tabby, otpremite jar na server.

Izvršite komandu java -jar tobebetterjavaer-0.0.1-SNAPSHOT.jar.

Šta???? Nije instaliran JDK. U redu, da bih poveo drugare koji besplatno koriste Alibaba Cloud server u učenju Linuxa, izdvojio sam ozbiljan novac i kupio sopstveni čist server.
PS: drugari kojima je potrebno da instaliraju JDK u centos okruženju mogu pogledati ovaj članak.
Nakon instaliranja JDK-a, ponovo izvršite komandu i videćete da Spring Boot projekat može normalno da radi na serveru.

Prvi Web projekat
Pošto se projekat uspešno pokrenuo, pristupimo portu 8080 u pregledaču da ga testiramo.

Opa, izbacio je Whitelabel. Ova 404 stranica je podrazumevana stranica greške Spring Boot-a, što znači da naš zahtev ne postoji u Web servisu.
Šta onda da radimo?
Dodajmo jedan Controller fajl koji obrađuje Web zahteve, sa sledećim sadržajem.
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "hello, springboot";
}
}Poslovna logika ovog koda je veoma jednostavna: korisnik pošalje hello zahtev, a server odgovara sa „hello, springboot".

OK, sada može da se pristupi. To znači da je razvoj našeg prvog Spring Boot projekta završen.
Vruće deploy-ovanje (hot reload)
Kao programeri, želimo da se kod nakon svake izmene automatski kompajlira i da se servis automatski ponovo učita, čime se oslobađamo muke ponovnog pokretanja koda.
spring-boot-devtools je baš takvo čarobno oruđe: kada ga dodamo u projekat, bilo da se izmeni kod ili konfiguracioni fajl, servis se može ponovo učitati u sekundi (poznato kao hot deploy), što nam je u razvoju veoma korisno.
Kako uključiti hot deploy?
Prvi korak, dodajte zavisnost u fajl pom.xml.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>Drugi korak, nema drugog koraka, haha.
Samo izmenite kod da isprobate. Izmenićemo sadržaj HelloController-a u:
Putanja izvornog koda
- Codingmore: https://github.com/itwanger/coding-more
- helloworld: https://github.com/itwanger/codingmore-learning
