JavaRush /Kurslar /All lectures for UZ purposes /Spring Boot bilan Dasturlash

Spring Boot bilan Dasturlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

Ushbu bo'limda Spring Boot'ni qanday ishlatish kerakligi haqida batafsil ma'lumot beriladi. Bu yerda build tizimlar, autokonfiguratsiya va ilovalarni ishga tushirish kabi mavzular ko'rib chiqiladi. Shuningdek, biz Spring Boot bilan ishlashning eng yaxshi usullarini ko'rib chiqamiz. Garchi Spring Boot'da hech qanday maxsus narsa bo'lmasa ham (bu shunchaki yana bir kutubxona), ba'zi ko'rsatmalar mavjud, ular rivojlanish jarayonini biroz soddalashtirishga yordam beradi.

Build tizimlari

Quyidagi maslahat: bog'liqliklarni boshqarishni qo'llab-quvvatlaydigan va "Maven Central" repozitoriyasida chop etilgan artefaktlarni iste'mol qila oladigan build tizimini tanlang. Biz Maven yoki Gradle'ni tanlashni tavsiya qilamiz. Spring Boot boshqa build tizimlari bilan ishlashi mumkin (masalan, Ant), lekin ular yaxshi qo'llab-quvvatlanmaydi.

Bog'liqliklarni boshqarish

Spring Boot'ning har bir nashri qo'llab-quvvatlanadigan bog'liqliklar ro'yxatiga ega. Amaliyotda sizga ushbu bog'liqliklarning versiyasini build konfiguratsiyasida ko'rsatish shart emas, chunki Spring Boot buni siz uchun amalga oshiradi. Agar siz Spring Boot'ni yangilab qo'ysangiz, bu bog'liqliklar ham ketma-ket yangilanadi.

Agar sizga kerak bo'lsa, Spring Boot uchun tavsiya etilgan qiymatlarni o'zgartirish imkoniyatiga ega bo'lishingiz mumkin.

Primat qilib tuzilgan ro'yxat, Spring Boot bilan ishlatilishi mumkin bo'lgan barcha Spring modullari va uchinchi tomon kutubxonalarning aniqlangan ro'yxatini o'z ichiga olgan. Ushbu ro'yxat siz Maven va Gradle bilan ishlatishingiz mumkin bo'lgan standart paket sifatida taqdim etiladi (spring-boot-dependencies).

Spring Boot'ning har bir nashri asosan Spring Framework versiyasi bilan bog'liq. Biz qat'iy ravishda uning versiyasini ko'rsatmaslikni tavsiya qilamiz.

Maven

Spring Boot'ni Maven bilan ishlatish haqida ma'lumot olish uchun Maven uchun Spring Boot plugin dokumentatsiyasiga murojaat qiling:

Gradle

Spring Boot'ni Gradle bilan ishlatish haqida ma'lumot olish uchun Gradle uchun Spring Boot plugin dokumentatsiyasiga murojaat qiling:

Ant

Spring Boot loyihasini Apache Ant+Ivy yordamida yig'ish mumkin. Shuningdek, spring-boot-antlib deb nomlangan "AntLib"-moduli mavjud bo'lib, Ant'ga ishga tushiriladigan jar fayllar yaratishda yordam beradi.

Tipik ivy.xml fayli quyidagi misolda ko'rsatilganidek ko'rinadi:

<ivy-module version="2.0">
    <info organisation="org.springframework.boot" module="spring-boot-sample-ant" />
    <configurations>
        <conf name="compile" description="everything needed to compile this module" />
        <conf name="runtime" extends="compile" description="everything needed to run this module" />
    </configurations>
    <dependencies>
        <dependency org="org.springframework.boot" name="spring-boot-starter"
            rev="${spring-boot.version}" conf="compile" />
    </dependencies>
</ivy-module>

Tipik build.xml fayli quyidagicha ko'rinadi:

<project
    xmlns:ivy="antlib:org.apache.ivy.ant"
    xmlns:spring-boot="antlib:org.springframework.boot.ant"
    name="myapp" default="build">
    <property name="spring-boot.version" value="2.7.5" />
    <target name="resolve" description="--> retrieve dependencies with ivy">
        <ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext]" />
    </target>
    <target name="classpaths" depends="resolve">
        <path id="compile.classpath">
            <fileset dir="lib/compile" includes="*.jar" />
        </path>
    </target>
    <target name="init" depends="classpaths">
        <mkdir dir="build/classes" />
    </target>
    <target name="compile" depends="init" description="compile">
        <javac srcdir="src/main/java" destdir="build/classes" classpathref="compile.classpath" />
    </target>
    <target name="build" depends="compile">
        <spring-boot:exejar destfile="build/myapp.jar" classes="build/classes">
            <spring-boot:lib>
                <fileset dir="lib/runtime" />
            </spring-boot:lib>
        </spring-boot:exejar>
    </target>
</project>

Starter paketlar

Starter paketlar bu sizning ilovangizga qo'shish uchun qulay bog'liqlik tavsiflovchi to'plamdir. Siz Spring va unga tegishli texnologiyalarning barcha kerakli qismlari uchun universal mexanizmga ega bo'lasiz, siz kutubxonalarni qidirib, ko'dni ko'chirib qo'yishingizga hojat yo'q. Masalan, agar siz Spring va JPA-ni ma'lumotlar bazasiga kirish uchun ishlatishni boshlamoqchi bo'lsangiz, loyihangizga spring-boot-starter-data-jpa bog'liqligini qo'shing.

Starter paketlar bog'liqliklarning ko'plab qismlarini o'z ichiga oladi va sizga loyihani tezda ishga tushirish uchun mos, mos keladigan boshqariladigan bog'liqlik to'plamini taqdim etadi.

Nomi nima anglatadi?

Barcha rasmiy starter paketlar bir xil nomlar bilan atalgan: spring-boot-starter-*, bu yerda * maxsus ilova turi. Ushbu nom tuzilmasi starter paketlarni topishda yordam beradi. Ko'plab IDE-lardagi Maven integratsiyasi bog'liqliklar orqali qidirishga imkon beradi. Masalan, agar sizning Eclipse yoki Spring Tools uchun mavzuga mos plagin o'rnatilgan bo'lsa, POM model muharririda ctrl-space tugmasini bosib, "spring-boot-starter" ni kiriting va to'liq ro'yxatni oling.

Uchinchi tomon starter paketlari spring-boot bilan boshlanmasligi kerak, chunki bu nom rasmiy Spring Boot artefaktlari uchun ajratilgan. Uchinchi tomon starter paketlari odatda loyiha nomi bilan boshlanadi. Masalan, thirdpartyproject deb nomlangan uchinchi tomon starter loyihasi odatda thirdpartyproject-spring-boot-starter deb ataladi.

Quyidagi starter paketlar Spring Boot tomonidan org.springframework.boot guruhida taqdim etiladi:

Jadval 1. Spring Boot uchun ilova starter paketlari
Nomi Tavsif

spring-boot-starter

Asosiy starter paketi, autokonfiguratsiya, logirovka va YAML qo'llab-quvvatlashini o'z ichiga oladi

spring-boot-starter-activemq

Apache ActiveMQ yordamida JMS xabar almashinuvi uchun starter paketi

spring-boot-starter-amqp

Spring AMQP va Rabbit MQ foydalanish uchun starter paketi

spring-boot-starter-aop

Spring AOP va AspectJ yordamida aspektga yo'naltirilgan dasturlash uchun starter paketi

spring-boot-starter-artemis

Apache Artemis yordamida JMS xabar almashinuvi uchun starter paketi

spring-boot-starter-batch

Spring Batch foydalanish uchun starter paketi

spring-boot-starter-cache

Spring Framework'ni kechayu kunduz qo'llab-quvvatlash vositalari uchun starter paketi

spring-boot-starter-data-cassandra

Cassandra va Spring Data Cassandra'dan foydalanish uchun starter paketi

spring-boot-starter-data-cassandra-reactive

Cassandra va Spring Data Cassandra Reactive'dan foydalanish uchun starter paketi

spring-boot-starter-data-couchbase

Couchbase va Spring Data Couchbase'dan foydalanish uchun starter paketi

spring-boot-starter-data-couchbase-reactive

Couchbase va Spring Data Couchbase Reactive'dan foydalanish uchun starter paketi

spring-boot-starter-data-elasticsearch

Elasticsearch va Spring Data Elasticsearch'dan foydalanish uchun starter paketi

spring-boot-starter-data-jdbc

Spring Data JDBC foydalanish uchun starter paketi

spring-boot-starter-data-jpa

Spring Data JPA va Hibernate'dan foydalanish uchun starter paketi

spring-boot-starter-data-ldap

Spring Data LDAP foydalanish uchun starter paketi

spring-boot-starter-data-mongodb

MongoDB va Spring Data MongoDB'dan foydalanish uchun starter paketi

spring-boot-starter-data-mongodb-reactive

MongoDB va Spring Data MongoDB Reactive'dan foydalanish uchun starter paketi

spring-boot-starter-data-neo4j

Neo4j va Spring Data Neo4j'dan foydalanish uchun starter paketi

spring-boot-starter-data-r2dbc

Spring Data R2DBC foydalanish uchun starter paketi

spring-boot-starter-data-redis

Redis va Spring Data Redis'dan foydalanish uchun starter paketi, Lettuce mijozidan foydalanadi

spring-boot-starter-data-redis-reactive

Redis va Spring Data Redis Reactive'dan foydalanish uchun starter paketi, Lettuce mijozidan foydalanadi

spring-boot-starter-data-rest

Spring Data REST yordamida Spring Data repozitoriyalarini REST orqali ochish uchun starter paketi

spring-boot-starter-freemarker

FreeMarker ko'rinishlari bilan MVC web ilovalari yaratish uchun starter paketi

spring-boot-starter-graphql

Spring GraphQL yordamida GraphQL ilovalari yaratish uchun starter paketi

spring-boot-starter-groovy-templates

Groovy Shablonlari yordamida MVC web ilovalari yaratish uchun starter paketi

spring-boot-starter-hateoas

Spring MVC va Spring HATEOAS orqali gipermedia asosida RESTful web ilovasi yaratish uchun starter paketi

spring-boot-starter-integration

Spring Integration'dan foydalanish uchun starter paketi

spring-boot-starter-jdbc

HikariCP ulanish hovuzi bilan JDBC'dan foydalanish uchun starter paketi

spring-boot-starter-jersey

JAX-RS va Jersey yordamida RESTful web ilovalari yaratish uchun starter paketi.

spring-boot-starter-jooq

jOOQ'dan foydalanib, JDBC orqali SQL ma'lumotlar bazasiga kirish uchun starter paketi.

spring-boot-starter-json

JSON o'qish va yozish uchun starter paketi

spring-boot-starter-jta-atomikos

Atomikos yordamida JTA tranzaksiyalari uchun starter paketi

spring-boot-starter-mail

Java Mail va Spring Framework elektron pochta jo'natish vositalaridan foydalanish uchun starter paketi

spring-boot-starter-mustache

Mustache ko'rinishlari bilan web ilovalar yaratish uchun starter paketi

spring-boot-starter-oauth2-client

Spring Security OAuth2/OpenID Connect mijoz funksiyalaridan foydalanish uchun starter paketi

spring-boot-starter-oauth2-resource-server

Spring Security'da OAuth2 resurs serveri funksiyalaridan foydalanish uchun starter paketi

spring-boot-starter-quartz

Quartz rejalashtiruvchisidan foydalanish uchun starter paketi

spring-boot-starter-rsocket

RSocket mijoz va serverlarini yaratish uchun starter paketi

spring-boot-starter-security

Spring Security'dan foydalanish uchun starter paketi

spring-boot-starter-test

Spring Boot ilovalarini JUnit Jupiter, Hamcrest va Mockito kabi kutubxonalar yordamida test qilish uchun starter paketi

spring-boot-starter-thymeleaf

Thymeleaf ko'rinishlari bilan MVC web ilovalar yaratish uchun starter paketi

spring-boot-starter-validation

Java Bean Validation va Hibernate Validator bilan foydalanish uchun starter paketi

spring-boot-starter-web

Spring MVC yordamida, shu jumladan RESTful, web ilovalar yaratish uchun starter paketi. Tomcatni standart o'rnatilgan konteyner sifatida ishlatadi

spring-boot-starter-web-services

Spring Web Services'dan foydalanish uchun starter paketi

spring-boot-starter-webflux

WebFlux ilovalarini Spring Framework'da React Web qo'llab-quvvatlashi bilan yaratish uchun starter paketi

spring-boot-starter-websocket

WebSocket ilovalarini Spring Framework'da WebSocket qo'llab-quvvatlashi bilan yaratish uchun starter paketi

Ilova starter paketlaridan tashqari, quyidagi starter paketlar ishlab chiqarishga tayyorlash funktsiyalarini qo'shish uchun ishlatilishi mumkin:

Jadval 2. Spring Boot uchun ishlab chiqarishga tayyor starter paketlar
Nomi Tavsif

spring-boot-starter-actuator

Spring Boot Actuator'dan foydalanish uchun starter paketi, u ishlab chiqarish dislokatsiyasi uchun funktsiyalarni o'z ichiga olgan va ilovani kuzatishga va boshqarishga yordam beradi

Oxirida, Spring Boot ham quyidagi starter paketlarni o'z ichiga oladi, bu texnik jihatlarni chiqarib tashlash yoki almashish kerak bo'lganda ishlatilishi mumkin:

Jadval 3. Spring Boot uchun texnik starter paketlar
Nomi Tavsif

spring-boot-starter-jetty

Jetty'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi.

spring-boot-starter-log4j2

Logirovka uchun Log4j2 dan foydalanish uchun starter paketi.

spring-boot-starter-logging

Logback yordamida logirovka uchun starter paketi. Standart logirovka starter paketi

spring-boot-starter-reactor-netty

Reactor Netty'ni o'rnatilgan reaktiv HTTP server sifatida ishlatish uchun starter paketi.

spring-boot-starter-tomcat

Tomcat'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi. Standart servlet konteyner starter paketi, spring-boot-starter-web tomonidan ishlatiladi

spring-boot-starter-undertow

Undertow'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi.

Qo'shimcha starter paketlar ro'yxati, jamiyat tomonidan kiritilgan, GitHub'dagi spring-boot-starters modulidagi README faylida ko'ring.

Kodni tuzilish

Spring Boot'da ishlash uchun kodni muayyan tuzilish talab etilmaydi. Biroq, ba'zi eng yaxshi amaliy usullar mavjud.

"Standart" paketdan foydalanish

Agar sinf package bayonotini o'z ichiga olmasa, u "standart paket"da deb hisoblanadi. "Standart paket"dan foydalanish odatda tavsiya etilmaydi va undan qochish kerak. Bu @ComponentScan, @ConfigurationPropertiesScan, @EntityScan yoki @SpringBootApplication annotatsiyalarini ishlatadigan Spring Boot ilovalari uchun muayyan muammolarga olib kelishi mumkin, chunki har bir jar-fayldan har bir sinf o'qiladi.

Biz tavsiya etilgan Java paket nomlash kelishuvlariga amal qilishni va teskari domen nomidan foydalanishni tavsiya etamiz (masalan, com.example.project).

Asosiy ilova classini joylashtirish

Odatda, asosiy ilova classini boshqa classlar ustiga asosiy paketga joylashtirish tavsiya etiladi. @SpringBootApplication annotatsiyasi ko'pincha asosiy classda joylashtiriladi va u ma'lum elementlar uchun asosiy "qidiruvi paketi"ni aniqlaydi. Masalan, agar siz JPA ilovasini yozayotgan bo'lsangiz, @SpringBootApplication annotatsiyasi bilan belgilangan class paketi @Entity annotatsiyali elementlarni qidirishda ishlatiladi. Asosiy paketdan foydalanish, shuningdek, faqat sizning loyihangiz uchun komponentlarni skanerlash imkonini beradi.

Agar siz @SpringBootApplication annotatsiyasidan foydalanishni xohlamasangiz, u import qiladigan @EnableAutoConfiguration va @ComponentScan annotatsiyalari bir xil ishlash logikasini belgilaydi, shuning uchun siz ularni o'rniga ishlatishingiz mumkin.

Quyidagi ro'yxatda odatiy tuzilma ko'rsatilgan:

com
 +- example
     +- myapplication
         +- MyApplication.java
         |
         +- customer
         |   +- Customer.java
         |   +- CustomerController.java
         |   +- CustomerService.java
         |   +- CustomerRepository.java
         |
         +- order
             +- Order.java
             +- OrderController.java
             +- OrderService.java
             +- OrderRepository.java

MyApplication.java faylida main metodi va asosiy @SpringBootApplication quyidagi tarzda e'lon qilinadi:

Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } 
Kotlin
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class MyApplication fun main(args: Array<String>) { runApplication<MyApplication>(*args) } 
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION