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:
@Configuration(proxyBeanMethods = false) @Profile("production") public class ProductionConfiguration { // ... }
@Configuration(proxyBeanMethods = false) @Profile("production") class ProductionConfiguration { // ... }
@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:
spring.profiles.active=dev,hsqldb
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:
spring.profiles.default=none
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:
# this document is valid
spring.profiles.active=prod
#---
# this document is invalid
spring.config.activate.on-profile=prod
spring.profiles.active=metrics
# 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:
spring.profiles.include[0]=common
spring.profiles.include[1]=local
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.
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
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.
GO TO FULL VERSION