Profillar

All lectures for UZ purposes
Daraja, Dars
Mavjud

Spring profillari dasturingiz konfiguratsiyasining qismlarini ajratib, ularni faqat ma'lum muhitlarda ochishga imkon beradi. Har qanday @Component, @Configuration yoki @ConfigurationProperties ni @Profile annotatsiyasi bilan belgilanib, yuklashda cheklash mumkin, quyida keltirilgan misolda ko'rsatilgandek:

Java
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration(proxyBeanMethods = false) @Profile("production") public class ProductionConfiguration { // ... } 
Kotlin
import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Profile @Configuration(proxyBeanMethods = false) @Profile("production") class ProductionConfiguration { // ... } 
Agar @ConfigurationProperties annotatsiyasi bilan belgilanadigan beanlar avtomatik skanerlash orqali emas, balki @EnableConfigurationProperties annotatsiyasi orqali ro'yxatdan o'tkazilsa, @Profile annotatsiyani @EnableConfigurationProperties annotatsiyasi joylashgan @Configuration bilan belgilangan klassga qo'yish kerak. Agar @ConfigurationProperties annotatsiyasi skanerlansa, @Profile annotatsiyani @ConfigurationProperties bilan belgilangan klassning o'ziga qo'yish mumkin.

spring.profiles.active xususiyatini Environment uchun faollashtirilgan profillarni aniqlashda ishlatishingiz mumkin. Ushbu xususiyatni avvalgi bobda tasvirlangan usullardan biri bilan belgilashingiz mumkin. Masalan, quyidagi kabi application.properties fayliga qo'shish mumkin:

Properties
spring.profiles.active=dev,hsqldb
Yaml
spring:
  profiles:
    active: "dev,hsqldb"

Buni qo'mondonlik qatorida ham belgilashingiz mumkin: --spring.profiles.active=dev,hsqldb.

Agar hech qanday profil faol bo'lmasa, standart profil faollashadi. Standart profilning nomi default bo'lib, uni Environment uchun spring.profiles.default xususiyati yordamida sozlash mumkin, quyidagi misolda keltirilgandek:

Properties
spring.profiles.default=none
Yaml
spring:
  profiles:
    default: "none"

spring.profiles.active va spring.profiles.default faqat profillarga tegishli bo'lmagan hujjatlarda ishlatilishi mumkin. Bu shuni anglatadiki, ularni spring.config.activate.on-profile yordamida faollashtirilgan profillarga tegishli fayllar yoki hujjatlarga kiritib bo'lmaydi.

Masalan, ikkinchi hujjat konfiguratsiyasi noto'g'ri:

Properties
# this document is valid
spring.profiles.active=prod
#---
# this document is invalid
spring.config.activate.on-profile=prod
spring.profiles.active=metrics
Yaml
# this document is valid
spring:
  profiles:
    active: "prod"
---
# this document is invalid
spring:
  config:
    activate:
      on-profile: "prod"
  profiles:
    active: "metrics"

Faol profillarni qo'shish

spring.profiles.active xususiyati boshqa xususiyatlar kabi ustunlik qoidalariga amal qiladi: Eng yuqori PropertySource ko'rsatkichi yuqori bo'lgan profile ustunlik beradi. Bu shuni anglatadiki, avval application.properties da faol profillarni belgilab, keyin qo‘mondonlik qatori kaliti bilan o‘rnini bosish mumkin.

Ba'zan, faol profillarni qo'shish foydali bo'ladi, o'rnini bosish o'rniga. spring.profiles.include xususiyatini spring.profiles.active xususiyati bilan faollashtiriladigan profillarga qo‘shimcha faol profillarni qo‘shish uchun ishlatishingiz mumkin. SpringApplication ning kirish nuqtasi qo'shimcha profillarni o'rnatish uchun Java API-ga ham ega. Buning uchun SpringApplication bo'limidagi setAdditionalProfiles() metodini ko'ring.

Masalan, agar dastur quyidagi xususiyatlar bilan ishlasa, umumiy va mahalliy profillar faollashadi, hatto --spring.profiles.active kaliti bilan ishlashda ham:

Properties
spring.profiles.include[0]=common
spring.profiles.include[1]=local
Yaml
spring:
  profiles:
    include:
      - "common"
      - "local"
spring.profiles.active kabi, spring.profiles.include faqat profillarga tegishli bo'lmagan hujjatlarda ishlatilishi mumkin. Bu shuni anglatadiki, ularni spring.config.activate.on-profile yordamida faollashtirilgan profillarga tegishli fayllar yoki hujjatlarga kiritib bo'lmaydi.

Profil guruhlari

Ba'zan, ilovada aniqlangan va ishlatiladigan profillar juda kichik modullu bo'lib, foydalanishda hajmli bo'lib qoladi. Masalan, mavjud proddb va prodmq profillari mustaqil tarzda ma'lumotlar bazasi va xabarlar almashinuvi funksiyalarini faollashtirish uchun ishlatilishi mumkin.

Spring Boot-da profil guruhlarini belgilash imkoniyati mavjud bo‘lib, bu bog‘liq profil guruhlari uchun mantiqiy nomlar belgilash imkonini beradi.

Masalan, biz proddb va prodmq profillarimizdan iborat production guruhini yaratishimiz mumkin.

Properties
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
Yaml
spring:
  profiles:
    group:
      production:
      - "proddb"
      - "prodmq"

Endi dastur --spring.profiles.active=production bilan ishlatilib, bir vaqtning o'zida production, proddb va prodmq profillarini faollashtirilishi mumkin.

Dasturiy profiling o'rnatish

Faol profillarni dasturiy ravishda o'rnatish uchun SpringApplication.setAdditionalProfiles(…​) ni dastur ishga tushishidan oldin chaqirishingiz mumkin. Shuningdek, ConfigurableEnvironment interfeysi orqali Spring'dan profillarni faollashtirishingiz mumkin.

Maxsus profil konfiguratsion fayllari

Maxsus profiling mos keladigan variantlari application.properties (yoki application.yml) va @ConfigurationProperties anotatsiyasi orqali havolalangan fayllar fayllar sifatida hisobga olib yuklanadi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION