Егер сен Spring Boot-пен немесе жалпы "Spring"-пен жаңа жұмыс істеп жатсаң, онда осы бөліммен танысудан бастау ұсынылады. Бұл бөлімде "не?", "қалай?" және "неге?" деген негізгі сұрақтарға жауап беруге тырысады. Бөлім Spring Boot-қа кіріспені және орнату жөніндегі нұсқаулықтарды қамтиды. Содан кейін, біз сендерді Spring Boot-та алғашқы қосымшаны жасау процесіне алып барамыз, негізгі қағидаларды түсіндіре отырып.
Spring Boot-қа кіріспе
Spring Boot Spring-ге негізделген дербес қосымшаларды жасауға көмектеседі, оларды кейін орындауға болады. Біз Spring платформасы мен үшінші тарап кітапханаларына субъективті көзқараспен қараймыз, сонымен сен аз жұмыс жасап бастау аласың. Көптеген Spring Boot қосымшаларында Spring-ді егжей-тегжейлі конфигурациялау қажет емес.
Сен Spring Boot-ты Java-қосымшаларына арналған java -jar
командасын немесе дәстүрлірақ әдістер арқылы war-файлдарын қолданып жүктеу үшін пайдалана аласың. Біз сондай-ақ "Spring скрипттерін" іске қосатын командалық жол құралын ұсынамыз.
Біздің негізгі мақсатымыз:
-
Spring көмегімен кез-келген әзірлемені тез және оңай бастау тәжірибесін қамтамасыз ету.
-
Бастапқыда өзіндік пікірлерімізді ұсыну, бірақ талаптар стандарттармен қайшы келгенде бас тарту.
-
Үлкен жобалар класына тән функционалды емес мүмкіндіктер жиынтығын ұсыну (мысалы, кіріктірілген серверлер, қауіпсіздік, метрика, жұмыс сипатын тексеру және сыртқы конфигурация файлы).
-
Код генерациясы мен XML-конфигурациясының болмауы.
Spring Boot-ты пайдаланып алғашқы қосымша жасау
Бұл бөлімде Spring Boot-тың кейбір негізгі мүмкіндіктерін көрсететін "Hello World!" атты шағын веб-қосымшаны құру қарастырылады. Біз бұл жобаны жинау үшін Maven қолданамыз, себебі көптеген IDE оны қолдайды.
spring.io веб-сайты Spring Boot арқылы "бастапқы нұсқаулықтарды" нұсқаулықтар арқылы кеңінен қамтиды. Егер нақты бір мәселені шешу қажет болса, алдымен сол жерден қараған жөн.
Төмендегі қадамдарды өткізіп, start.spring.io адресіне өтіп, тәуелділіктер іздеп веб үшін бастаушы пакетті таңдай аласың. Бұл жағдайда жаңа жоба құрылымы жасалады, сондықтан код жазуды бірден бастауға болады.
Бастамас бұрын, терминалды ашып, Java мен Maven-нің жарамды нұсқалары орнатылғанына көз жеткізу үшін келесі командаларды орында:
$ 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 құру
Бастау үшін, Maven үшін pom.xml
файлын жасау қажет. pom.xml
– бұл жобаны құру үшін қолданылатын ережелер жинағы. Өзіңіздің сүйікті мәтіндік редакторыңызды ашып, келесіні қосыңыз:
<?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>
<!-- Мұнда қосымша жолдар қосылады... -->
</project>
Алдыңғы тізім сенің жұмыс құрылуыңды қамтамасыз етуі керек. Сен оны mvn package
орындау арқылы тексере аласың (әзірше "jar бос болады – қосуға арналған мазмұн жоқ!" деген ескертуді елемеуге болады).
Classpath-тен тәуелділіктер қосу
Spring Boot classpath-қа jar-файлдарды қосуға мүмкіндік беретін "бастапқы пакеттер" жинағын ұсынады. Біздің қосымшаларға арналған smoke tests үшін spring-boot-starter-parent
POM моделінің parent
бөлігінде қолданылған. spring-boot-starter-parent
– бұл пайдаланылатын Maven параметрлерін әдепкі бойынша ұсынатын арнайы бастапқы пакет. Ол сондай-ақ тәуелділікті басқаруды қосады, сондықтан "таңдаулы" тәуелділіктер үшін version
тегін өткізуге болады.
Басқа "бастапқы пакеттер" қосымшалардың нақты түріне қажет болуы мүмкін тәуелділіктерді қамтиды. Біз веб-қосымша жасап жатқандықтан, spring-boot-starter-web
тәуелділігін қосамыз. Бұған дейін не бар екенін көру үшін, келесі команданы орындауға болады:
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree
командасы жобаның тәуелділіктерінің ағаштық көрінісін береді. Көріп отырғандай, spring-boot-starter-parent
өз алдына ешқандай тәуелділіктер бермейді. Қажетті тәуелділіктерді қосу үшін, pom.xml
файлыңызды өңдеп, parent
бөлігінен кейін бірден spring-boot-starter-web
тәуелділігін қосыңыз:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Егер тағы да mvn dependency:tree
орындасаңыз, онда қосымша тәуелділіктер, оның ішінде веб-сервер Tomcat пен Spring Boot бар екенін көресіз.
Код жазу
Қосымшаны аяқтау үшін бір Java файл жасау керек. Әдепкі бойынша Maven src/main/java
каталогындағы бастапқы кодтарды құрастырады, сондықтан каталог құрылымын жасау керек, содан кейін src/main/java/MyApplication.java
деген атпен файл қосып, келесі кодты енгізіңіз:
@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) }
Көп код болмағанымен, көп нәрсе болып жатыр. Келесі бірнеше бөлімде маңызды элементтерді қарастырамыз.
@RestController және @RequestMapping аннотациялары
Біздің MyApplication
класындағы алғашқы аннотация – бұл @RestController
. Бұл стереотипті аннотация деп аталады. Бұл аннотация кодты оқитын адамдарға және Spring-ге класс белгілі бір рөл атқаратынын көрсету үшін қызмет етеді. Біздің жағдайда, класс веб үшін @Controller
болып табылады, сондықтан Spring кіріс веб-сауалдарын өңдегенде оны ескереді.
@RequestMapping
аннотациясы "бағыттауға" қатысты ақпарат береді. Ол Spring-ке /
жолымен кез-келген HTTP-сұранымының home
әдісіне сәйкес келуі керектігін хабарлайды. @RestController
аннотациясы Spring-ке нәтиже ретінде жолды тура пайдаланушы бағдарламаға қайтару қажет екенін хабарлайды.
@RestController
және
@RequestMapping
(олар Spring Boot-қа тән емес).
@EnableAutoConfiguration аннотациясы
Класс деңгейіндегі екінші аннотация – бұл @EnableAutoConfiguration
. Бұл аннотация Spring Boot-қа сіз қосқан jar-тәуелділіктерге негізделе отырып, Spring-ді қалай конфигурациялау керектігін "болжау" қажеттігін хабарлайды. spring-boot-starter-web
Tomcat пен Spring MVC-ді қосқандықтан, авто-конфигурация құралы веб-қосымша құрып жатқаныңызды болжайды және Spring-ді тиісінше конфигурациялайды.
"main" әдісі
Біздің қосымшамыздың соңғы бөлігі – бұл main
әдісі. Бұл Java-ның әдеттегі қолданбаға кіру нүктесіне сәйкес келетін стандартты әдіс. Біздің main әдісі Spring Boot үшін SpringApplication
класына өкілеттік береді, оны run
шақыру арқылы жүзеге асырады. SpringApplication
біздің қосымшамызды бастапқы жүктеуін жасайды, Spring-ді іске қосады, содан соң автоматты түрде конфигурацияланған веб-сервер Tomcat-ті іске қосады. Бізге SpringApplication
қандай Spring компоненты бастапқы екенін хабарлау үшін MyApplication.class
аргумент ретінде run
әдісіне беру керек. args
массиві де командалық жол аргументтерін ашу үшін беріледі.
Үлгіні іске қосу
Қазіргі уақытта, қосымша жұмыс істеуі керек. spring-boot-starter-parent
бар POM-моделін қолданғандықтан, қосымшаны іске қосу үшін қолдануға болатын run
мақсаты бар. Жобаның түбірлік каталогынан mvn spring-boot:run
енгізіп, қосымшаны іске қосыңыз. Келесіге ұқсас экранды көру керек:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (мұнда лог хабарламалары бар)
....... . . .
........ MyApplication 2.222 секундта басталды (JVM үшін 6.514 секунд)
Егер веб-браузерді localhost:8080
ашсаңыз, мына хабарды көресіз:
Hello World!
Қосымшадан шығу үшін, ctrl-c
басыңыз.
Орындауға болатын jar файлын жасау
Біз өз мысалымызды өндірістік ортада іске қосуға болатын толық дербес орындауға болатын jar файлын жасаумен аяқтаймыз. Орындауға болатын jar файлдар (кейде "майлы jar (fat jar)" деп атайды) – бұл орындалу үшін қажет барлық jar-тәуелділіктерімен бірге жинақталған компиляцияланған класстарды қамтитын мұрағаттар.
Орындауға болатын jar файлды жасау үшін, spring-boot-maven-plugin
біздің pom.xml
файлына қосу қажет. Мұны істеу үшін, келесі жолдарды dependencies
секциясының астына қосыңыз:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent
POM-моделі
<executions>
конфигурациясын
repackage
мақсатымен байланыстыру үшін қамтиды. Егер сіз ата-ана POM-моделін қолданбасаңыз, онда сізге осы конфигурацияны өз бетіңізше жариялау керек.
pom.xml
сақтаңыз және келесі команданы командалық жолдан mvn package
ретінде орындаңыз:
$ 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] ------------------------------------------------------------------------
Егер target
каталогына қарасаңыз, онда myproject-0.0.1-SNAPSHOT.jar
файлы болуы керек. Файлдың көлемі шамамен 10 МБ болуы тиіс. Егер ішіне қарағыңыз келсе, jar tvf
қолдана аласыз, төмендегідей:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
target
каталогында myproject-0.0.1-SNAPSHOT.jar.original
деп аталатын әлдеқайда кіші файл да болуы тиіс. Бұл түпнұсқа jar файл, Spring Boot қайта ораудан бұрын Maven жасаған.
Бұл қосымшаны орындау үшін, келесі командамен java -jar
пайдаланыңыз:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (мұнда лог хабарламалары бар)
....... . . .
........ MyApplication 2.536 секундта басталды (JVM үшін 2.864)
Бұрынғыдай, қосымшадан шығу үшін ctrl-c
басыңыз.
GO TO FULL VERSION