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.
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).
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.
Quyidagi starter paketlar Spring Boot tomonidan org.springframework.boot guruhida taqdim etiladi:
| Nomi | Tavsif |
|---|---|
| Asosiy starter paketi, autokonfiguratsiya, logirovka va YAML qo'llab-quvvatlashini o'z ichiga oladi |
|
| Apache ActiveMQ yordamida JMS xabar almashinuvi uchun starter paketi |
|
| Spring AMQP va Rabbit MQ foydalanish uchun starter paketi |
|
| Spring AOP va AspectJ yordamida aspektga yo'naltirilgan dasturlash uchun starter paketi |
|
| Apache Artemis yordamida JMS xabar almashinuvi uchun starter paketi |
|
| Spring Batch foydalanish uchun starter paketi |
|
| Spring Framework'ni kechayu kunduz qo'llab-quvvatlash vositalari uchun starter paketi |
|
| Cassandra va Spring Data Cassandra'dan foydalanish uchun starter paketi |
|
| Cassandra va Spring Data Cassandra Reactive'dan foydalanish uchun starter paketi |
|
| Couchbase va Spring Data Couchbase'dan foydalanish uchun starter paketi |
|
| Couchbase va Spring Data Couchbase Reactive'dan foydalanish uchun starter paketi |
|
| Elasticsearch va Spring Data Elasticsearch'dan foydalanish uchun starter paketi |
|
| Spring Data JDBC foydalanish uchun starter paketi |
|
| Spring Data JPA va Hibernate'dan foydalanish uchun starter paketi |
|
| Spring Data LDAP foydalanish uchun starter paketi |
|
| MongoDB va Spring Data MongoDB'dan foydalanish uchun starter paketi |
|
| MongoDB va Spring Data MongoDB Reactive'dan foydalanish uchun starter paketi |
|
| Neo4j va Spring Data Neo4j'dan foydalanish uchun starter paketi |
|
| Spring Data R2DBC foydalanish uchun starter paketi |
|
| Redis va Spring Data Redis'dan foydalanish uchun starter paketi, Lettuce mijozidan foydalanadi |
|
| Redis va Spring Data Redis Reactive'dan foydalanish uchun starter paketi, Lettuce mijozidan foydalanadi |
|
| Spring Data REST yordamida Spring Data repozitoriyalarini REST orqali ochish uchun starter paketi |
|
| FreeMarker ko'rinishlari bilan MVC web ilovalari yaratish uchun starter paketi |
|
| Spring GraphQL yordamida GraphQL ilovalari yaratish uchun starter paketi |
|
| Groovy Shablonlari yordamida MVC web ilovalari yaratish uchun starter paketi |
|
| Spring MVC va Spring HATEOAS orqali gipermedia asosida RESTful web ilovasi yaratish uchun starter paketi |
|
| Spring Integration'dan foydalanish uchun starter paketi |
|
| HikariCP ulanish hovuzi bilan JDBC'dan foydalanish uchun starter paketi |
|
| JAX-RS va Jersey yordamida RESTful web ilovalari yaratish uchun starter paketi. |
|
| jOOQ'dan foydalanib, JDBC orqali SQL ma'lumotlar bazasiga kirish uchun starter paketi. |
|
| JSON o'qish va yozish uchun starter paketi |
|
| Atomikos yordamida JTA tranzaksiyalari uchun starter paketi |
|
| Java Mail va Spring Framework elektron pochta jo'natish vositalaridan foydalanish uchun starter paketi |
|
| Mustache ko'rinishlari bilan web ilovalar yaratish uchun starter paketi |
|
| Spring Security OAuth2/OpenID Connect mijoz funksiyalaridan foydalanish uchun starter paketi |
|
| Spring Security'da OAuth2 resurs serveri funksiyalaridan foydalanish uchun starter paketi |
|
| Quartz rejalashtiruvchisidan foydalanish uchun starter paketi |
|
| RSocket mijoz va serverlarini yaratish uchun starter paketi |
|
| Spring Security'dan foydalanish uchun starter paketi |
|
| Spring Boot ilovalarini JUnit Jupiter, Hamcrest va Mockito kabi kutubxonalar yordamida test qilish uchun starter paketi |
|
| Thymeleaf ko'rinishlari bilan MVC web ilovalar yaratish uchun starter paketi |
|
| Java Bean Validation va Hibernate Validator bilan foydalanish uchun starter paketi |
|
| Spring MVC yordamida, shu jumladan RESTful, web ilovalar yaratish uchun starter paketi. Tomcatni standart o'rnatilgan konteyner sifatida ishlatadi |
|
| Spring Web Services'dan foydalanish uchun starter paketi |
|
| WebFlux ilovalarini Spring Framework'da React Web qo'llab-quvvatlashi bilan yaratish uchun starter paketi |
|
| 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:
| Nomi | Tavsif |
|---|---|
| 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:
| Nomi | Tavsif |
|---|---|
| Jetty'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi. |
|
| Logirovka uchun Log4j2 dan foydalanish uchun starter paketi. |
|
| Logback yordamida logirovka uchun starter paketi. Standart logirovka starter paketi |
|
| Reactor Netty'ni o'rnatilgan reaktiv HTTP server sifatida ishlatish uchun starter paketi. |
|
| Tomcat'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi. Standart servlet konteyner starter paketi, |
|
| Undertow'ni o'rnatilgan servlet konteyner sifatida ishlatish uchun starter paketi. |
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.
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.
@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:
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
@SpringBootApplication class MyApplication fun main(args: Array<String>) { runApplication<MyApplication>(*args) }
GO TO FULL VERSION