Agar sen Spring Boot yoki umuman "Spring" bilan ishlashni endi boshlagan bo'lsang, ushbu bo'lim bilan tanishishing lozim. Bu bo'lim "nima?", "qanday?" va "nimaga?" kabi asosiy savollarga javob beradi. Bo'limda Spring Boot-ga kirish va o'rnatish bo'yicha yo'riqnomalar mavjud. Keyin, biz birinchi Spring Boot dasturini yaratish jarayonida ba'zi asosiy tamoyillarni tushuntirib beramiz.
Spring Boot-ga Kirish
Spring Boot Spring asosida mustaqil dasturlar yaratishga yordam beradi, ular keyinchalik ishga tushirilishi mumkin. Biz Spring platformasi va tashqi kutubxonalar haqida subyektiv qarashlarga egamiz, shuning uchun siz minimal harakat bilan ishga kirishingiz mumkin. Spring Boot dasturlarining aksariyati batafsil Spring sozlamalariga muhtoj emas.
Siz Spring Boot-dan Java dasturlarini yaratish uchun foydalanishingiz mumkin, ularni java -jar buyrug'i yoki war-fayllar orqali an'anaviy o'rnatish usullari bilan ishga tushirish mumkin. Biz shuningdek, "Spring scripts"ni ishga tushiradigan buyruq satri vositasini taqdim etamiz.
Bizning asosiy maqsadlarimiz:
-
Spring uchun har qanday rivojlanish uchun radikal tezroq va kengroq mavjud boshlang'ich tajribani ta'minlash.
-
Boshidanoq o'z fikrini taklif qilish, lekin agar talablar standartdan chetga chiqsa, undan voz kechish.
-
Katta loyihalar uchun umumiy bo'lgan turli nofunksional imkoniyatlarni taqdim etish (masalan, ichki serverlar, xavfsizlik, metrikalar, sog'likni tekshirish va tashqi fayldagi sozlamalar).
-
Kodni yaratish va XML sozlamalariga ehtiyojning to'liq yo'qligi.
Spring Boot yordamida birinchi dasturingizni rivojlantirish
Ushbu bo'limda Spring Boot ning ba'zi asosiy imkoniyatlarini namoyish qiluvchi kichik "Hello World!" veb-dasturini yaratish tasvirlangan. Ushbu loyihani yig'ish uchun biz Maven-ni ishlatamiz, chunki ko'pchilik IDElar uni qo'llab-quvvatlaydi.
Veb-sayt spring.io Spring Boot-ni ishlatib, "boshlanishi bo'yicha ishlash" bo'yicha ko'plab yo'riqnomalarni o'z ichiga oladi. Agar siz aniq muammoni hal qilishingiz kerak bo'lsa, avval u erga qarang.
Quyidagi qadamlarni o'tkazib yuborishingiz mumkin, start.spring.io manziliga o'ting va qidiruvdan veb boshlanishi paketini tanlang. Shu bilan birga, loyihaning yangi tuzilishi yaratiladi va siz darhol kod yozishni boshlashingiz mumkin.
Dasturlanishni boshlashdan oldin, terminalni oching va quyidagi buyruqlarni ishlatib, sizda Java va Maven-ning tegishli versiyalari o'rnatilganligini tekshiring:
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
POM yaratish
Avval Maven uchun pom.xml faylini yaratishingiz kerak. pom.xml - bu loyihani yig'ish uchun ishlatiladigan qoidalarning to'plami. O'zingiz yoqtirgan matn muharririni oching va quyidagini qo'shing:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<!-- Qo'shimcha satrlar bu yerda quyiladi... -->
</project>
Oldingi listing sizga ishlaydigan build olish imkonini beradi. Siz mvn packageni ishga tushirib, uni tekshirishingiz mumkin (hali "jar bo'sh bo'ladi - kiritish uchun belgilangan tarkib yo'q!" ogohlantirishini e'tiborsiz qoldirishingiz mumkin).
Classpathdan bog'liqliklarni qo'shish
Spring Boot bir necha "starter packages"ni o'z ichiga oladi, ular jar fayllarni classpathga qo'shishga imkon beradi. Bizning smoke testlar uchun ilovalarimiz POM modelining parent bo'limida spring-boot-starter-parentni ishlatadi. spring-boot-starter-parent - bu Maven-ning sukut parametrlari bilan ta'minlovchi maxsus starter. U "sevimli" bog'liqliklar uchun version teglari tushirilishi uchun bog'liqliklarni boshqarish bo'limini taqdim etadi.
Boshqa "starter packages" ehtimol ma'lum turdagi ilovalarni ishlab chiqishda kerak bo'ladigan bog'liqliklarni ta'minlaydi. Veb-ilova ishlab chiqayotganimiz tufayli, spring-boot-starter-web bog'liqligini qo'shamiz. Ushbu bosqichdan oldin, sizda mavjud bo'lgan narsalarni quyidagi buyruqni bajarib tekshirish mumkin:
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree buyrug'i loyihaning bog'liqliklarini daraxt shaklida ko'rsatadi. Ko'rib turganingizdek, spring-boot-starter-parent o'zi hech qanday bog'liqliklarni ko'rsatmaydi. Kerakli bog'liqliklarni qo'shish uchun, pom.xml faylingizni tahrirlab, parent bo'limi ostiga spring-boot-starter-web bog'liqligini qo'shing:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Yana bir bor mvn dependency:tree ni ishga tushirsangiz, Tomcat veb-serveri va Spring Bootni o'z ichiga olgan bir nechta qo'shimcha bog'liqliklarni ko'rasiz.
Kodni yozish
Dasturimizni yakunlash uchun bitta Java fayl yaratishimiz kerak. Sukut bo'yicha, Maven src/main/java katalogidan manbalarni kompilyatsiya qiladi, shuning uchun ushbu katalog strukturasi yaratilib, src/main/java/MyApplication.java nomli fayl qo'shilishi kerak, u quyidagi kodni o'z ichiga oladi:
@RestController @EnableAutoConfiguration public class MyApplication { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
@RestController @EnableAutoConfiguration class MyApplication { @RequestMapping("/") fun home() = "Hello World!" } fun main(args: Array<String>) { runApplication<MyApplication>(*args) }
Kod juda ko'p emas, lekin juda ko'p narsalar sodir bo'lyapti. Keyingi bir necha bo'limda muhim elementlarni ko'rib chiqamiz.
@RestController va @RequestMapping annotatsiyalari
Bizning MyApplication sinfimiz uchun birinchi annotatsiya @RestController hisoblanadi. Bu stereotipli annotatsiya deb ataladi. Ushbu annotatsiya kodni o'qiydigan odamlar va Springga, sinf ma'lum bir rolni o'ynayotganini tavsiya qiladi. Bizning holda, sinf veb uchun @Controller bo'lganligi sababli, Spring kiruvchi veb-so'rovlarni qayta ishlashda uni hisobga oladi.
@RequestMapping annotatsiyasi "routing" haqida ma'lumot beradi. Bu Springga, har qanday / yo'lga ega bo'lgan HTTP-so'rov home metodiga yo'naltirilishi kerakligini bildiradi. @RestController annotatsiyasi Springga natijada hosil bo'lgan satrni bevosita chaqirgan dasturga qaytarish kerakligini bildiradi.
@RestController va
@RequestMapping annotatsiyalari Spring MVC annotatsiyalari (ular Spring Boot-ga xos emas).
@EnableAutoConfiguration annotatsiyasi
Sinf darajasidagi ikkinchi annotatsiya @EnableAutoConfiguration hisoblanadi. Ushbu annotatsiya Spring Boot-ga qo'shilgan jar bog'liqliklaringiz asosida Springni qanday sozlash kerakligini "tahmin qilish" kerakligini bildiradi. spring-boot-starter-web Tomcat va Spring MVCni qo'shganligi sababli, autoconfig vositasi siz veb-ilova rivojlantirayotganingizni tahmin qiladi va Springni mos ravishda sozlaydi.
"main" metodi
Bizning dasturimizning yakuniy qismi main metodi hisoblanadi. Bu Java standarti bo'yicha dasturga kirish nuqtasi bo'lgan standart metod. Bizning main metodimiz runni chaqirib, Spring Boot-ning SpringApplication sinfiga vakolat beradi. SpringApplication bizning dasturimizni boshlang'ich yuklaydi, Springni ishga tushiradi, u esa o'z navbatida avtomatik sozlangan Tomcat veb-serverini ishga tushiradi. run metodiga argument sifatida MyApplication.class ni kiritishimiz kerak, bu SpringApplicationga asosiy komponentning qaysi Spring ekanligini bildiradi. args massiviga ham har qanday buyruq satri argumentlarini ochish uchun yuboriladi.
Misolni bajarish
Ushbu bosqichda dastur ishlashi kerak. Siz spring-boot-starter-parent bilan POM modelidan foydalanganligingiz sababli, sizda dastur ishga tushirish uchun run maqsadi mavjud. Dastur ishga tushirish uchun loyiha asosiy katalogidan mvn spring-boot:run ni kiriting. Quyidagi kabi bir natija ko'rishingiz kerak:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.222 seconds (JVM running for 6.514)
Agar siz brauzeringizda localhost:8080 manzilini ochsangiz, quyidagi xabarni ko'rasiz:
Hello World!
Dasturdan chiqish uchun ctrl-c tugmasini bosing.
Ishga tushirish mumkin bo'lgan jar faylni yaratish
Bizning misolimizni to'liq ishlab chiqarish muhitida ishga tushirish mumkin bo'lgan o'z-o'zini yuqadigan jar-fayl yaratish bilan tugatamiz. Ishga tushirish mumkin bo'lgan jar-fayllar (ba'zida "fat jar-fayllar" deb ataladi) - bu arxivlar bo'lib, ular bajarilishi uchun kerak bo'lgan barcha jar-bog'liqliklar bilan birga kompilyatsiya qilingan sinflarni o'z ichiga oladi.
Ishga tushirish mumkin bo'lgan jar-fayl yaratish uchun spring-boot-maven-pluginni pom.xml fayliga qo'shishingiz kerak. Buning uchun quyidagi satrlarni dependencies bo'limidan ozgina pastroq qo'shing:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent POM modeli
<executions> ni
repackage maqsadini bog'lash uchun konfiguratsiyani o'z ichiga oladi. Agar siz ota POM modellardan foydalanmasangiz, siz ushbu konfiguratsiyani o'z qo'lingiz bilan e'lon qilishingiz kerak bo'ladi.
pom.xml faylini saqlang va quyidagi kabi buyruq qatoridan mvn package ni bajaring:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.7.5:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Agar target katalogiga nazar solsangiz, u yerda myproject-0.0.1-SNAPSHOT.jar ni ko'rishingiz kerak. Fayl hajmi taxminan 10 MB bo'lishi kerak. Ichkariga qarashni istasangiz, jar tvfni quyidagicha ishlatishingiz mumkin:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
target katalogda shuningdek myproject-0.0.1-SNAPSHOT.jar.original nomli ancha kichik fayl ham mavjud bo'lishi kerak. Bu Maven dastlab yaratgan original jar-fayli bo'lib, u Spring Boot tomonidan qayta qadoqlangan.
Ushbu dastur ishga tushirish uchun java -jar buyrug'idan foydalaning, quyidagicha:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.536 seconds (JVM running for 2.864)
Agar ilgari bo'lgani kabi, dasturdan chiqish uchun ctrl-c tugmasini bosing.
GO TO FULL VERSION