स्प्रिंग प्रोफाइल आपके एप्लिकेशन कॉन्फ़िगरेशन के हिस्सों को अलग करने और इसे केवल कुछ वातावरणों में उपलब्ध कराने का एक शक्तिशाली तरीका प्रदान करता है। यह सुविधा आपके कोड को बदले बिना विकास, परीक्षण और उत्पादन परिवेश के लिए विभिन्न कॉन्फ़िगरेशन को संभालने के लिए विशेष रूप से उपयोगी है।
स्प्रिंग प्रोफ़ाइल आपको सक्रिय प्रोफ़ाइल के आधार पर सशर्त रूप से बीन्स को पंजीकृत करने की अनुमति देती है। इसका मतलब है कि आप एक ही प्रकार के कई बीन्स को परिभाषित कर सकते हैं और निर्दिष्ट कर सकते हैं कि किसी दिए गए वातावरण में कौन सा सक्रिय होना चाहिए।
स्प्रिंग बूट कॉन्फ़िगरेशन के लिए एप्लिकेशन-{प्रोफ़ाइल}.प्रॉपर्टीज़ या एप्लिकेशन-{प्रोफ़ाइल}.yml फ़ाइलों के एक सेट का उपयोग करता है। इन फ़ाइलों में प्रोफ़ाइल-विशिष्ट कॉन्फ़िगरेशन होते हैं और इन्हें सक्रिय प्रोफ़ाइल के आधार पर लोड किया जाता है।
spring: application: name: MySpringApp server: port: 8080 # Default port
spring: datasource: url: jdbc:h2:mem:devdb username: sa password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: update show-sql: true server: port: 8081 # Development port
spring: datasource: url: jdbc:mysql://prod-db-server:3306/proddb username: prod_user password: prod_password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: validate show-sql: false server: port: 8082 # Production port
आप अपना स्प्रिंग बूट एप्लिकेशन चलाते समय --spring.profiles.active पैरामीटर का उपयोग करके एक प्रोफ़ाइल सक्रिय कर सकते हैं:
java -jar my-spring-app.jar --spring.profiles.active=dev
वैकल्पिक रूप से, आप अपनी एप्लिकेशन.yml फ़ाइल में सक्रिय प्रोफ़ाइल निर्दिष्ट कर सकते हैं:
spring: profiles: active: dev # or prod
आप पर्यावरण चर का उपयोग करके सक्रिय प्रोफ़ाइल भी सेट कर सकते हैं:
export SPRING_PROFILES_ACTIVE=dev
स्प्रिंग सक्रिय प्रोफ़ाइल के आधार पर बीन्स को सशर्त रूप से पंजीकृत करने के लिए एक @प्रोफ़ाइल एनोटेशन प्रदान करता है। यहाँ एक उदाहरण है:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration public class AppConfig { @Bean @Profile("dev") public DataSource devDataSource() { return new HikariDataSource(); // Development-specific DataSource } @Bean @Profile("prod") public DataSource prodDataSource() { return new HikariDataSource(); // Production-specific DataSource } }
इस उदाहरण में, devDataSource बीन केवल तभी बनाया जाएगा जब देव प्रोफ़ाइल सक्रिय है, और prodDataSource बीन तब बनाया जाएगा जब उत्पाद प्रोफ़ाइल सक्रिय है।
परीक्षण लिखते समय, आप @ActiveProfiles एनोटेशन का उपयोग करके निर्दिष्ट कर सकते हैं कि कौन सी प्रोफ़ाइल सक्रिय होनी चाहिए:
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @SpringBootTest @ActiveProfiles("dev") public class DevProfileTests { @Autowired private DataSource dataSource; @Test public void testDataSource() { // Test code using the development DataSource } }
कभी-कभी, आप सक्रिय प्रोफ़ाइल के आधार पर विभिन्न गुण फ़ाइलें लोड करना चाह सकते हैं। इसे प्राप्त करने के लिए आप @PropertySource एनोटेशन का उपयोग कर सकते हैं:
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration @PropertySource("classpath:application-${spring.profiles.active}.properties") public class PropertyConfig { }
स्प्रिंग प्रोफाइल विभिन्न वातावरणों के लिए अलग-अलग कॉन्फ़िगरेशन को प्रबंधित करने का एक मजबूत और लचीला तरीका है। प्रोफाइल के आधार पर अपने कॉन्फ़िगरेशन गुणों और बीन्स को अलग करके, आप यह सुनिश्चित कर सकते हैं कि आपका एप्लिकेशन प्रत्येक वातावरण में सही ढंग से व्यवहार करता है, चाहे वह विकास, परीक्षण या उत्पादन हो। इस आलेख में उल्लिखित तकनीकों का उपयोग करके, आप अपने स्प्रिंग बूट एप्लिकेशन में आसानी से प्रोफाइल सेट अप और प्रबंधित कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3