JavaRush /Курстар /All lectures for KK purposes /Spring Boot-қа кіріспе

Spring Boot-қа кіріспе

All lectures for KK purposes
Деңгей , Сабақ
Қол жетімді

Егер сен 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 бос болады – қосуға арналған мазмұн жоқ!" деген ескертуді елемеуге болады).

Бұл кезеңде жобаны IDE-ге импорттауға болады (көптеген заманауи Java IDE-лерінде Maven-ді тікелей қолдау қарастырылған). Оңайлату үшін, осы мысалда біз қарапайым мәтіндік редакторды қолдануды жалғастырамыз.

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 деген атпен файл қосып, келесі кодты енгізіңіз:

Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class MyApplication { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } 
Kotlin
import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.runApplication import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @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-ке нәтиже ретінде жолды тура пайдаланушы бағдарламаға қайтару қажет екенін хабарлайды.

Spring MVC-ның аннотациялары @RestController және @RequestMapping (олар Spring Boot-қа тән емес).

@EnableAutoConfiguration аннотациясы

Класс деңгейіндегі екінші аннотация – бұл @EnableAutoConfiguration. Бұл аннотация Spring Boot-қа сіз қосқан jar-тәуелділіктерге негізделе отырып, Spring-ді қалай конфигурациялау керектігін "болжау" қажеттігін хабарлайды. spring-boot-starter-web Tomcat пен Spring MVC-ді қосқандықтан, авто-конфигурация құралы веб-қосымша құрып жатқаныңызды болжайды және Spring-ді тиісінше конфигурациялайды.

Бастапқы пакеттер және авто-конфигурация

Авто-конфигурация бастапқы пакеттермен жұмыс істеуге арналған, бірақ бұл екі ұғым тікелей байланысты емес. Сіз бастапқы пакеттерден тыс jar-тәуелділіктерді еркін таңдай аласыз. Spring Boot әлі де болса, қолданбаңызды автоматты түрде конфигурациялауға тырысады.

"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 файлдар және Java

Java енді jar файлдардың ішіндегі қосымша jar файлдарды жүктеудің стандартты әдісін ұсынбайды. Егер дербес қолданбаны тарату қажет болса, бұл мәселе тудыруы мүмкін.

Осы мәселені шешу үшін көптеген әзірлеушілер "uber (убер)" jar файлдарды қолданады. Uber jar файлында барлық тәуелділіктердің барлық класстары бір мұрағатқа оралған. Бұл әдістің мәселесі – қолданбада нақты қандай кітапханаларды кірістірілгенін түсіну қиын болады. Сонымен қатар, егер бірдей файл атауы әртүрлі jar файлдарында қолданылса (бірақ мазмұны әртүрлі болса), бұл мәселе тудыруы мүмкін.

Spring Boot басқа жолды пайдаланады және тікелей 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 басыңыз.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION