Dasturchi Asboblari

All lectures for UZ purposes
Daraja, Dars
Mavjud

Spring Boot qo'shimcha asboblar to'plamini o'z ichiga oladi, bu ilovalarni ishlab chiqish jarayonini biroz yoqimli qilishi mumkin. spring-boot-devtools modulini qo'shish orqali har qanday loyihaga ishlab chiqish davomida qo'shimcha funksiyalar qo'shish mumkin. Devtools asboblarini qo'llab-quvvatlashni qo'shish uchun, Maven va Gradle uchun keltirilgan quyidagi listinlarda ko'rsatilganidek, loyihangizga modulga bog'liqlik qo'shing:

Maven
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
Gradle
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}
Ishlab chiqish vositalari to'lig'icha o'ralgan ilova bajarilganda avtomatik ravishda o'chiriladi. Agar ilovangiz java -jar orqali yoki maxsus class loader orqali ishga tushirilsa, u "ishlab chiqarish ilovasi" deb hisoblanadi. Siz spring.devtools.restart.enabled tizim mulki orqali bu ishlash mantig'ini boshqarishingiz mumkin. Devtools-ni sinf yuklovchidan mustaqil ravishda ishga tushirish uchun tizim mulkini -Dspring.devtools.restart.enabled=true sifatida o'rnating. Buni xavfsizlik tahdidi bo'lgan ishlab chiqarish muhitida qilish mumkin emas. Devtools-ni o'chirish uchun bog'liqlikni chiqarib tashlang yoki tizim mulkini -Dspring.devtools.restart.enabled=false sifatida o'rnating.
Agar Maven-da bog'liqlikni ixtiyoriy deb belgilasangiz yoki Gradle-da developmentOnly konfiguratsiyasidan foydalansangiz (yuqorida ko'rsatilganidek), bu sizning loyihangizdan foydalangan boshqa modullarga devtoolsning tranzitli qo'llanilishini oldini oladi.
Qayta qadoqlangan arxivlar odatda devtools-ni o'z ichiga olmaydi. Agar siz devtools'ning masofadan foydalaniladigan ma'lum bir funksiyasidan foydalanmoqchi bo'lsangiz, uni qo'shishingiz kerak bo'ladi. Maven plaginidan foydalanganda, excludeDevtools mulkini false qiymatiga o'rnating. Gradle plaginidan foydalanganda, vazifa uchun classpathni developmentOnly konfiguratsiyasini o'z ichiga oladigan qilib sozlang.

Sinflarni yuklashdagi muammolarni diagnostika qilish

Qayta yuklash funksiyasi ikki sinf yuklovchi yordamida amalga oshiriladi. Ko'pgina ilovalar uchun bunday yondashuv yaxshi ishlaydi. Ammo ba'zida bu ko'p modulli loyihalarda ayniqsa sinf yuklashdagi muammolarni keltirib chiqarishi mumkin.

Sinf yuklash muammolari haqiqatdan devtools va ularning ikki sinf yuklovchisi tomonidan kelib chiqqanligini aniqlash uchun qayta yuklashni o'chirib qo'ying. Agar bu muammolarni hal qilsa, sinf yuklovchi qayta yuklashni butun loyihangiz bo'ylab moslashtiring.

Standart xususiyatlar

Spring Boot tomonidan qo'llab-quvvatlanadigan ba'zi kutubxonalar samaradorlikni oshirish uchun keshlardan foydalanadi. Masalan, shablonlashtiruvchilar kompilyatsiya qilingan shablonlarni keshlaydi, shablon fayllarini qayta tahlil qilishdan qochish uchun. Bundan tashqari, Spring MVC statik resurslarni qayta ishlashda HTTP kesh sarlavhalarini qo'shishi mumkin.

Keshlash ishlab chiqarish muhitida juda foydali bo'lsa-da, ishlab chiqish paytida yangi kiritilgan o'zgarishlarni ko'rishga xalaqit berishi mumkin. Shuning uchun, spring-boot-devtools standart bo'yicha kesh sozlamalarini o'chirib qo'yadi.

Kesh sozlamalari odatda application.properties faylidagi parametrlar yordamida sozlanadi. Masalan, Thymeleaf spring.thymeleaf.cache xususiyatini taqdim etadi. Ushbu xususiyatlarni qo'lda o'rnatish o'rniga, spring-boot-devtools moduli ishlab chiqish vaqtida mos keladigan konfiguratsiyani avtomatik ravishda tatbiq etadi.

Quyidagi jadvalda barcha tatbiq etilgan xususiyatlar keltirilgan:

Nomi Standart qiymat

server.error.include-binding-errors

always

server.error.include-message

always

server.error.include-stacktrace

always

server.servlet.jsp.init-parameters.development

true

server.servlet.session.persistent

true

spring.freemarker.cache

false

spring.graphql.graphiql.enabled

true

spring.groovy.template.cache

false

spring.h2.console.enabled

true

spring.mustache.servlet.cache

false

spring.mvc.log-resolved-exception

true

spring.reactor.debug

true

spring.template.provider.cache

false

spring.thymeleaf.cache

false

spring.web.resources.cache.period

0

spring.web.resources.chain.cache

false

Agar sizga standart parametrlar kerak bo'lmasa, spring.devtools.add-properties ni false ga o'rnatishingiz mumkin application.properties faylida.

Spring MVC va Spring WebFlux ilovalarini ishlab chiqishda veb-so'rovlarga haqida ko'proq ma'lumot kerak bo'lganda, ishlab chiqish vositalari ishlab chiqish vaqtida web jurnal guruhiga DEBUG jurnalini yoqadi. Bu so'rov kelishi haqida, uni qaysi handler qayta ishlayotganligi, so'rov javobi natijasi va boshqa tafsilotlarni beradi. Agar barcha so'rov tafsilotlarini (potentsial maxfiy ma'lumotlarni o'z ichiga olgan holda) ro'yxatga kiritish kerak bo'lsa, spring.mvc.log-request-details yoki spring.codec.log-request-details konfiguratsiya xususiyatlarini yoqishingiz mumkin.

Avtomatik qayta yuklash

spring-boot-devtools dan foydalangan ilovalar, classpath-dagi fayllar o'zgartirilganda avtomatik ravishda qayta yuklanadi. Bu IDE da ishlaganda foydali funksiya bo'lishi mumkin, chunki kodga o'zgartirish kiritishda juda tezkor javob qaytaradi. Standartda, classpath-dagi har qanday katalog yozuvi o'zgarishlar uchun kuzatiladi. Ba'zi manbalar, masalan statik kontent va ko'rinish shablonlari, ilovani qayta yuklashni talab qilmaydi.

Qayta yuklashni boshlash

DevTools classpath-dagi manbalarni kuzatgani uchun, qayta yuklashni boshlashning yagona usuli classpathni yangilashdir. Siz IDE yoki qurilish plaginining birortasidan foydalansangiz farqi yo'q, o'zgartirilgan fayllar kompilatsiyalanishi kerak qayta yuklashni boshlash uchun. Classpathni yangilash usuli ishlatilayotgan asbobga bog'liq:

  • Eclipse da o'zgartirilgan faylni saqlash classpathni yangilaydi va qayta yuklashni boshlaydi.

  • IntelliJ IDEA da loyihani qurish (Build +→+ Build Project) xuddi shu ta'sirga ega.

  • Agar build pluginidan foydalanayotgan bo'lsangiz, Maven uchun mvn compile yoki Gradle uchun gradle build bajarilishi qayta yuklashni boshlaydi.

Agar qayta yuklash Maven yoki Gradle build plugini orqali amalga oshirilsa, forking qiymatini enabled holda qoldirish kerak. Agar siz forkingni o'chirsangiz, devtools tomonidan ishlatiladigan ilova uchun izolyatsiyalangan class loader yaratilmaydi va qayta yuklash to'g'ri ishlamaydi.
Avtomatik qayta yuklash LiveReload bilan juda yaxshi ishlaydi. Agar JRebel dan foydalansangiz, avtomatik qayta yuklashlar sinfni dinamik qayta yuklash foydasiga o'chiriladi. Boshqa devtools funksiyalari (masalan, LiveReload va xususiyatlarni qayta belgilash) hali ham foydalanish mumkin bo'ladi.
DevTools qayta yuklash paytida uni yopish uchun ilova kontekstini tugatish qisqichlarini ishlatadi. Ishlash to'g'ri bo'lmaydi agar tugatish qisqichi o'chirilgan ( SpringApplication.setRegisterShutdownHook(false)).
DevTools ApplicationContext tomonidan foydalaniladigan ResourceLoader yuklovchisini sozlash kerak. Agar sizning ilovangiz allaqachon bunday yuklovchi qo'llab-quvvatlasa, u o'raladi. ApplicationContext da getResource metodini to'g'ridan-to'g'ri overshirish qo'llab-quvvatlanmaydi.
Avtomatik qayta yuklash AspectJ orqali bog'lanishda qo'llab-quvvatlanmaydi.
Qayta yuklash va qayta yuklash

Spring Boot tomonidan taqdim etilgan qayta yuklash texnologiyasi ikki sinf yuklovchi yordamida ishlaydi. O'zgarmaydigan sinflar (masalan, uchinchi tomon jar fayllari) asosiy sinf yuklagichida yuklanadi. Faol ravishda ishlab chiqilayotgan sinflar qayta yuklash sinf yuklagichida yuklanadi. Agar ilova qayta yuklansa, qayta yuklovchi sinf yuklagichi bir marta ishlatiladi, so'ngra yangi yaratiladi. Bu yondashuv ilovani qayta yuklash odatda "sovuq ishga tushirish" ga qaraganda tezroq sodir bo'lishini anglatadi, chunki asosiy sinf yuklagichi allaqachon mavjud va to'ldirilgan.

Agar siz qayta yuklash ilovalaringiz uchun yetarlicha tez ekanligini his qilsangiz yoki sinf yuklash muammolariga duch kelsangiz, ZeroTurnaround kompaniyasining JRebel kabi qayta yuklash texnologiyalarini ko'rib chiqishingiz mumkin. Ular sinflar yuklanayotganda ularni qayta yuklashga qulayroq qilish uchun qayta yozib chiqarish orqali ishlaydi.

Holat hisob-kitobidagi o'zgarishlarni jurnalga yozish

Standartda, ilova har safar qayta yuklanganda, holat hisob-kitobining delta hisoboti jurnalga yoziladi. Hisobot avtomatik konfiguratsiyadagi o'zgarishlarni, masalan, beanlarni qo'shish yoki olib tashlash va konfiguratsiya xususiyatlarini o'rnatish kabi o'zgarishlarni ko'rsatadi.

Hisobot bilan birga jurnalga yozishni o'chirish uchun, quyidagi xususiyatni o'rnating:

Properties
spring.devtools.restart.log-condition-evaluation-delta=false
Yaml
spring:
  devtools:
    restart:
      log-condition-evaluation-delta: false

Resurslarni istisno qilish

Ba'zi resurslar o'zgartirilganda qayta yuklashni boshlatish shart emas. Masalan, Thymeleaf shablonlarini bir joyda tahrirlash mumkin. Standartda, /META-INF/maven, /META-INF/resources, /resources, /static, /public yoki /templates resurslaridagi o'zgarishlar qayta yuklashni boshlamaydi, lekin jonli qayta yuklashni boshlaydi. Agar siz ushbu istisnolarni sozlamoqchi bo'lsangiz, spring.devtools.restart.exclude xususiyatidan foydalanishingiz mumkin. Masalan, faqat /static va /public ni istisno qilish uchun quyidagi xususiyatni o'rnating:

Properties
spring.devtools.restart.exclude=static/**,public/**
Yaml
spring:
  devtools:
    restart:
      exclude: "static/**,public/**"
Agar siz bu standart qiymatlarni saqlashni va qo'shimcha istisnolarni qo'shishni xohlasangiz, spring.devtools.restart.additional-exclude xususiyatidan foydalaning.

Qo'shimcha yo'llarni kuzatish

Ilova classpathda bo'lmagan fayllarda o'zgarishlar qilinganidan keyin qayta yuklanishini yoki qayta yuklanishini xohlashingiz mumkin. Buning uchun spring.devtools.restart.additional-paths xususiyatidan foydalanib, o'zgarishlarni kuzatish uchun qo'shimcha yo'llarni sozlang. Siz spring.devtools.restart.exclude xususiyatidan foydalanib, qo'shimcha yo'llardagi o'zgarishlar to'liq qayta yuklashni yoki jonli qayta yuklashni boshlashini boshqarishingiz mumkin.

Qayta yuklashni o'chirish

Agar sizga qayta yuklash funksiyasi kerak bo'lmasa, uni spring.devtools.restart.enabled xususiyati bilan o'chirishingiz mumkin. Ko'pgina hollarda, bu xususiyatni application.properties faylida o'rnatishingiz mumkin (shunday qilib qayta yuklovchi sinf yuklagichi hali ham boshlanadi, lekin fayl o'zgarishlari kuzatilmaydi).

Agar siz butunlay qayta yuklash yordam vositalarini o'chirishni istasangiz (masalan, ular ma'lum bir kutubxona bilan ishlamayotgani sababli), System ning spring.devtools.restart.enabled xususiyatini false ga o'rnating SpringApplication.run(…​) chaqirilishidan oldin, quyidagi misolda ko'rsatilganidek:

Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApplication { public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(MyApplication.class, args); } } 
Kotlin
import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication @SpringBootApplication object MyApplication { @JvmStatic fun main(args: Array<String>) { System.setProperty("spring.devtools.restart.enabled", "false") SpringApplication.run(MyApplication::class.java, *args) } } 

Trigger faylidan foydalanish

Agar siz o'zgartirilgan fayllarni doimiy ravishda kompilatsiya qiladigan IDE bilan ishlayotgan bo'lsangiz, qayta yuklashni faqat muayyan vaqtlarda boshlashni afzal ko'rishingiz mumkin. Buning uchun "trigger fayli" dan foydalanishingiz mumkin, bu ma'lum bir fayl bo'lib, agar siz haqiqatan qayta yuklashni boshlamoqchi bo'lsangiz, uni o'zgartirishingiz kerak.

Har qanday fayl yangilanishi tekshiruvni boshlaydi, lekin qayta yuklash faqat Devtools biror narsa qilish kerakligini aniqlasa sodir bo'ladi.

Trigger faylidan foydalanish uchun spring.devtools.restart.trigger-file xususiyatini faylingiz nomiga (yo'lini chiqarib tashlagan holda) o'rnating. Trigger fayli classpathda biror joyda bo'lishi kerak.

Masalan, agar sizda quyidagi tuzilishga ega loyiha bo'lsa:

src
+- main
   +- resources
      +- .reloadtrigger

Shunda trigger-file xususiyati quyidagicha bo'ladi:

Properties
spring.devtools.restart.trigger-file=.reloadtrigger
Yaml
spring:
  devtools:
    restart:
      trigger-file: ".reloadtrigger"

Endi qayta yuklash faqat src/main/resources/.reloadtrigger yangilanganida sodir bo'ladi.

Siz spring.devtools.restart.trigger-file ni global parametr sifatida o'rnatishni xohlagan bo'lishingiz mumkin, shunda barcha loyihalaringiz bir xil ish mantiqqa ega bo'ladi.

Ba'zi IDE lar faqat trigger faylini qo'lda yangilashdan qochish funktsiyalariga ega. Eclipse uchun Spring Tools va IntelliJ IDEA (Ultimate Edition) kabi qo'llab-quvvatlash vositalariga ega. Spring Tools da siz trigger-file ning nomi .reloadtrigger ekanligini ko'rsatgan holda konsol ko'rinishidagi "reload" tugmasini ishlatishingiz mumkin. IntelliJ IDEA qanday holatda bo'lsa qo'llanma ko'rsatmalariga rioya qiling.

Qayta yuklovchi sinf yuklagichni sozlash

Qayta yuklash funksiyasi ikki sinf yuklovchi orqali amalga oshiriladi. Agar muammolar yuzaga kelsa, siz nima qaysi sinf yuklovchi tomonidan yuklanishini sozlashingiz kerak bo'lishi mumkin.

Standartda, IDE-ingizdagi har qanday ochiq loyiha "qayta yuklovchi" sinf yuklagichi yordamida yuklanadi, va har qanday oddiy .jar fayli "asosiy" sinf yuklagichi yordamida yuklanadi. mvn spring-boot:run yoki gradle bootRun ishlatilsa, @SpringBootApplication annotatsiyasiga ega loyiha "qayta yuklovchi" sinf yuklagichi yordamida yuklanadi, va boshqalar "asosiy" sinf yuklagichi yordamida yuklanadi.

Spring Boot ga loyihadagi komponentlarni boshqa sinf yuklovchi yordamida yuklashni ko'rsatishingiz mumkin, META-INF/spring-devtools.properties fayli yarating. spring-devtools.properties fayli restart.exclude va restart.include prefikslariga ega xususiyatlarni o'z ichiga olishi mumkin. Include elementlar "qayta yuklovchi" sinf yuklagichiga ko'tarilishi kerak bo'lgan komponentlar, va exclude elementlar "asosiy" sinf yuklagichiga tushirilishi kerak bo'lgan elementlar. Xususiyatning qiymati quyidagi misolda ko'rsatilgandek classpathga tatbiq etiladigan muntazam ifoda naqshidir:

Properties
restart.exclude.companycommonlibs=/mycorp-common-[\\w\\d-\\.]+\\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w\\d-\\.]+\\.jar
Yaml
restart:
  exclude:
    companycommonlibs: "/mycorp-common-[\\w\\d-\\.]+\\.jar"
  include:
    projectcommon: "/mycorp-myproj-[\\w\\d-\\.]+\\.jar"
Barcha xususiyat kalitlari noyob bo'lishi kerak. Agar xususiyat restart.include. yoki restart.exclude. bilan boshlansa, u hisobga olinadi.
Classpath dan barcha META-INF/spring-devtools.properties yuklanadi. Siz ularni loyihangiz ichida yoki loyihangiz foydalanayotgan kutubxonalarda qadoqlashiz mumkin.

Ma'lum cheklovlar

Qayta yuklash funksiyasi standart ObjectInputStream bilan deserializatsiya qilinayotgan obyektlar bilan yaxshi ishlamaydi. Agar sizga ma'lumotlarni deserializatsiya qilish kerak bo'lsa, ConfigurableObjectInputStream dan Spring dan foydalanishingiz mumkin Thread.currentThread().getContextClassLoader() bilan birga.

Afsuski, ba'zi uchinchi tomon kutubxonalari deserializatsiyani kontekstli yuklagichni hisobga olmagan holda amalga oshiradi. Agar siz bunday muammoga duch kelsangiz, uni ishlab chiquvchi mualliflardan tuzatishni so'rashingiz kerak bo'ladi.

LiveReload

spring-boot-devtools moduli, resurs o'zgarganda brauzer yangilanishini boshlash uchun foydalaniladigan ichki LiveReload serverini o'z ichiga oladi. Chrome, Firefox va Safari uchun LiveReload brauzer kengaytmalari livereload.com saytida bepul mavjud.

Agar LiveReload serverini ilovangizni ishga tushirganingizda ishlatishni istamasangiz, spring.devtools.livereload.enabled xususiyatini false o'rnating.

Faqat bitta LiveReload serverni bir vaqtning o'zida ishga tushirish mumkin. Ilovangizni ishga tushirishdan oldin boshqa LiveReload serverlari ish faoliyatida emasligiga ishonch hosil qiling. Agar siz IDE dan bir nechta ilova ishga tushirsangiz, faqat birinchisi LiveReload ni qo'llab-quvvatlaydi.
Fayl o'zgarganda LiveReload funksiyasi boshlanishi uchun avtomatik qayta yuklash yoqilgan bo'lishi kerak.

Global parametrlar

Siz devtools uchun global parametrlarni sozlashingiz mumkin, quyidagi fayllardan birini $HOME/.config/spring-boot katalogiga qo'shib:

  1. spring-boot-devtools.properties

  2. spring-boot-devtools.yaml

  3. spring-boot-devtools.yml

Ushbu fayllarga qo'shilgan har qanday xususiyatlar, devtools ishlatadigan mashinangizdagi barcha Spring Boot ilovalariga tatbiq etiladi. Masalan, qayta yuklashning trigger fayliga doimiy foydalanish uchun quyidagi xususiyatni spring-boot-devtools fayliga qo'shishingiz kerak:

Properties
spring.devtools.restart.trigger-file=.reloadtrigger
Yaml
spring:
  devtools:
    restart:
      trigger-file: ".reloadtrigger"

Standartda $HOME foydalanuvchining boshlang'ich katalogidir. Ushbu joylashuvni sozlash uchun SPRING_DEVTOOLS_HOME yoki spring.devtools.home tizim xususiyatini o'rnating.

Agar $HOME/.config/spring-boot da devtools konfiguratsiya fayllari topilmasa, $HOME katalogining ildizida .spring-boot-devtools.properties faylini qidirish amalga oshiriladi. Bu eski versiyali Spring Boot bilan ishlaydigan ilovalar bilan global devtools konfiguratsiyasini bo'lishishni ta'minlaydi, $HOME/.config/spring-boot joylashuvini qo'llab-quvvatlamaydi.

Devtools uchun properties/yaml fayllaridagi profillar qo'llab-quvvatlanmaydi.

.spring-boot-devtools.properties faylida faollashtirilgan har qanday profillar, profilga xos fayllarni yuklashga ta'sir qilmaydi. Profillarga xos fayllar nomlari (spring-boot-devtools-<profile>.properties shaklidagi) va YAML va Properties fayllaridagi spring.config.activate.on-profile hujjatlar qo'llab-quvvatlanmaydi.

Fayl tizimi watcher-ni sozlash

FileSystemWatcher aniqlangan vaqt oralig'ida sinf o'zgarishlarini so'rov qilish orqali ishlaydi, keyin esa o'zgarishlar yo'qligiga ishonch hosil qilish uchun oldindan belgilangan sokinlik davrini kutadi. Spring Boot IDE ga to'liq tayanib, fayllarni Spring Boot o'qiy oladigan joyga ko'chirishni qo'llab-quvvatlaydi, shuning uchun siz devtools yordamida ilovani qayta yuklanganda ba'zi o'zgarishlar aks ettirilmay qolishi mumkin. Agar siz bu kabi muammolarni doimiy ravishda kuzatayotgan bo'lsangiz, spring.devtools.restart.poll-interval va spring.devtools.restart.quiet-period parametrlarini ishlab chiqish atrof muhitiga mos keladigan qiymatlargacha oshirishni sinab ko'ring:

Properties
spring.devtools.restart.poll-interval=2s
spring.devtools.restart.quiet-period=1s
Yaml
spring:
  devtools:
    restart:
      poll-interval: "2s"
      quiet-period: "1s"

Endi kuzatib borilayotgan classpath kataloglari har 2 soniyada o'zgarishlar uchun tekshiriladi, va sinflar uchun qo'shimcha o'zgarishlar yo'qligiga ishonch hosil qilish uchun 1-sekundlik sokin davrga rioya qilinadi.

Uzoq ilovalar

Spring Boot dasturchi asboblari faqat mahalliy rivojlanish bilan cheklanmagan. Siz ilovalarni uzoqdan ishga tushirishda ham bir necha funktsiyalardan foydalanishingiz mumkin. Uzoq ishlash vositalarini qo'llab-quvvatlash ixtiyoriy ravishda qabul qilinadi, chunki ularni faollashtirish xavfsizlik tahdidini keltirib chiqarishi mumkin. Ularni faqat ishonchli tarmoqda ishlaganda yoki SSL orqali himoya mavjud bo'lganda faollashtirish kerak. Agar bu variantlardan biri mavjud bo'lmasa, DevTools uchun uzoqdan ish vositalarini ishlatish kerak emas. Ishlab chiqarish joylashtirishda hech qachon uzoq ish vositalarini faollashtirish kerak emas.

Qo'llab-quvvatlashni faollashtirish uchun, siz devtools qayta qadoqlangan arxivda mavjud bo'lishiga ishonch hosil qilishingiz kerak, quyidagi listinda ko'rsatganidek:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludeDevtools>false</excludeDevtools>
            </configuration>
        </plugin>
    </plugins>
</build>

Keyin, spring.devtools.remote.secret xususiyatini o'rnashingiz kerak. Har qanday muhim parol yoki maxfiy ma'lumot kabi, qiymat maxsus va ishonchli bo'lishi kerak, shunda uni taxmin qilib yoki tanlab olishning iloji yo'q.

Devtools uchun uzoq ish vositalari ikki qismda taqdim etiladi: server tomonida ulanishlarni qabul qiladigan tugatish nuqtasi va IDEda ishga tushiradigan mijoz ilovasi. Server komponenti spring.devtools.remote.secret xususiyati o'rnatilganda avtomatik ravishda faollashadi. Mijoz komponentini qo'lda ishga tushirish kerak.

Devtools bilan masofadan ishlash Spring WebFlux ilovalari uchun qo'llab-quvvatlanmaydi.

Uzoqdan mijoz ilovasini ishga tushirish

Uzoqdan mijoz ilovasi IDE dan ishlash uchun mo'ljallangan. Siz org.springframework.boot.devtools.RemoteSpringApplication ni uzoqdan ulanish qabul qiladigan loyiha bilan bir xil classpath bilan bajarasiz. Ilovani yagona majburiy argumenti uzoqqa ulanadigan URL-manzili.

Masalan, agar siz Eclipse yoki Spring Tools dan foydalansangiz va Cloud Foundry ga joylashgan my-app nomli loyiha bo'lsa, quyidagilarni amalga oshirishingiz kerak:

  • Menudan Run tanlovidan Run Configurations…​ ni tanlang.

  • Yangi "Run Configuration" yarating Java Application.

  • my-app loyihasini toping.

  • org.springframework.boot.devtools.RemoteSpringApplication ni asosiy sinf deb foydalaning.

  • https://myapp.cfapps.io ni Program arguments ga qo'shing (yoki sizning uzoq ilovangiz uchun boshqa URL-manzil).

Uzoqdan mijoz ilovasi quyidagicha ko'rinishi mumkin:

  .   ____          _                                              __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _          ___               _      \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` |        | _ \___ _ __  ___| |_ ___ \ \ \ \
 \\/  ___)| |_)| | | | | || (_| []::::::[]   / -_) '  \/ _ \  _/ -_) ) ) ) )
  '  |____| .__|_| |_|_| |_\__, |        |_|_\___|_|_|_\___/\__\___|/ / / /
 =========|_|==============|___/===================================/_/_/_/
 :: Spring Boot Remote ::  (v2.7.5)
2022-10-20 12:40:15.175  INFO 16215 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Starting RemoteSpringApplication v2.7.5 using Java 1.8.0_345 on myhost with PID 16215 (/Users/myuser/.m2/repository/org/springframework/boot/spring-boot-devtools/2.7.5/spring-boot-devtools-2.7.5.jar started by myuser in /opt/apps/)
2022-10-20 12:40:15.182  INFO 16215 --- [           main] o.s.b.devtools.RemoteSpringApplication   : No active profile set, falling back to 1 default profile: "default"
2022-10-20 12:40:15.913  INFO 16215 --- [           main] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2022-10-20 12:40:15.946  INFO 16215 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Started RemoteSpringApplication in 1.471 seconds (JVM running for 2.063)
Uzoqdan mijoz ilovasi haqiqatda ilova qanday classpath ishlatsa, o'sha classpath-ni ishlatganligi sababli, kataloglarning xususiyatlarini bevosita o'qiy oladi. Shunday qilib, spring.devtools.remote.secret xususiyati o'qib olinadi va autentifikatsiya uchun serverga uzatiladi.
Har doim https:// ni ulanish protokoli sifatida ishlatishni tavsiya qilamiz, shunda trafik shifrlangan va parollarni ushlab qolish imkoni yo'q.
Agar uzoq ilovaga kirish uchun proxy dan foydalanishingiz kerak bo'lsa, spring.devtools.remote.proxy.host va spring.devtools.remote.proxy.port xususiyatlarini sozlang.

Masofaviy yangilanishlar

Uzoqdagi mijoz classpath yo'lida o'zgarishlarni kuzatib boradi, xuddi mahalliy qayta yuklash dasturi kabi. Har qanday yangilangan resurs uzoq ilovaga uzatiladi va (agar kerak bo'lsa) qayta yuklashni boshlaydi. Bu bolishi mumkin, agar sizda mahalliy darajada mavjud bo'lmagan bulut xizmatidan foydalanuvchi funksiyani qayta ishlayotgan bo'lsangiz. Odatda, masofadagi yangilanish va qayta yuklash to'liq qayta qurish va joylashtirishdan ancha tez sodir bo'ladi.

Agar sizning rivojlanish muhitida sekin ishlayotgan bo'lsa, sokinlik davri etarli bo'lmaydi va sinf o'zgarishlari paketlarga bo'lib tashlanishi mumkin. Birinchi sinf o'zgarishlari paketi yuklangach, server qayta yuklanadi. Keyingi paket biriktirilmasligi mumkin, chunki serverni qayta yuklanmoqda.

Odatda, bu RemoteSpringApplication jurnallarida ba'zi sinflarni yuklash muvaffaqiyatsiz bo'lganligi haqida ogohlantirish sifatida namoyon bo'ladi, va keyin qayta harakatlanadi. Ammo bu dasturiy kodning uyg'unligiga olib kelishi mumkin va birinchi sinf oʻzgarishlari paketini yuklagandan soʻng qayta yuklash imkoniyati boʻlmaydi. Agar bu muammolar doimiy ravishda kuzatilayotgan bo'lsa, spring.devtools.restart.poll-interval va spring.devtools.restart.quiet-period parametrlarini o'z rivojlanish muhitiga mos keladigan qiymatlargacha oshirishni sinab ko'ring.

Fayllar faqat ular masofaviy mijoz tomonidan ishlayotganida kuzatiladi. Agar siz faylni masofaviy mijoz ishlayotganidan oldin o'zgartirsangiz, u masofaviy serverga uzatilmaydi.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION