Spring Boot में डिफ़ॉल्ट पोर्ट: कॉन्फ़िगर करने के 5 तरीके

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आपका Spring Boot 8080 पर सुनने को "क्यों नहीं" तैयार है?

\n

आप अपना पहला Spring Boot एप्लिकेशन चला रहे हैं, कंसोल में मनचाहा बैनर देखते हैं, ब्राउज़र खोलते हैं — और वहाँ "Connection refused" दिखता है। परिचित स्थिति है? अक्सर समस्या यह होती है कि पोर्ट 8080 पहले से किसी अन्य प्रक्रिया (जैसे Skype, Docker या आपके एप्लिकेशन की दूसरी इंस्टेंस) द्वारा उपयोग किया जा रहा है। या, इसके विपरीत, आपको एक ही मशीन पर तीन माइक्रोसर्विसेज चलानी हैं, और वे सभी एक ही पोर्ट पर कब्जा करना चाहती हैं।

\n

इस लेख में हम Spring Boot में पोर्ट सेट करने के सभी मुख्य तरीकों पर चर्चा करेंगे — सबसे सरल से लेकर प्रोडक्शन के लिए "बैटल-टेस्टेड" तरीकों तक। आप सीखेंगे कि कॉन्फ़िगरेशन फ़ाइलों, एनवायरनमेंट वेरिएबल्स, कमांड लाइन आर्गुमेंट्स और प्रोग्रामेटिक रूप से पोर्ट को कैसे ओवरराइड किया जाए। और अंत में, मैं एक चेकलिस्ट दूंगा कि स्थिति के अनुसार कौन सा तरीका चुनना चाहिए।

\n\n

तरीका 1: application.properties — क्लासिक तरीका

\n

सबसे सामान्य और सहज तरीका। फ़ाइल src/main/resources/application.properties में बस एक लाइन जोड़ें:

\n
server.port=9090
\n

बस इतना ही। एप्लिकेशन को पुनरारंभ करने के बाद, यह पोर्ट 9090 पर सुनेगा। यदि 8080 पर वापस जाना है, तो बस लाइन हटाएँ या कमेंट कर दें।

\n

लाभ: सरलता, स्पष्टता, "बॉक्स से बाहर" काम करता है।

\n

नुकसान: कोड में हार्डकोडेड — प्रत्येक वातावरण (dev, test, prod) के लिए फ़ाइल को मैन्युअल रूप से बदलना होगा या प्रोफाइल का उपयोग करना होगा।

\n\n

तरीका 2: application.yml (YAML) — संरचना प्रेमियों के लिए

\n

यदि आप YAML फ़ॉर्मेट पसंद करते हैं, तो कॉन्फ़िगरेशन इस प्रकार होगा:

\n
server:\n  port: 9090
\n

इंडेंटेशन पर ध्यान दें: port से पहले दो स्पेस। YAML स्पेस के प्रति संवेदनशील है, लेकिन यह सेटिंग्स को समूहित करने की अनुमति देता है। उदाहरण के लिए, आप एक साथ कॉन्टेक्स्ट पथ भी सेट कर सकते हैं:

\n
server:\n  port: 9090\n  servlet:\n    context-path: /myapp
\n

कब उपयोग करें: यदि आपका प्रोजेक्ट पहले से सभी कॉन्फ़िगरेशन के लिए YAML का उपयोग करता है (जैसे Spring Cloud Config के लिए)।

\n\n

तरीका 3: कमांड लाइन आर्गुमेंट्स — DevOps के लिए लचीलापन

\n

सबसे लचीला तरीका, जो अक्सर कंटेनरों और CI/CD में उपयोग किया जाता है। JAR फ़ाइल चलाते समय, बस पैरामीटर पास करें:

\n
java -jar myapp.jar --server.port=9090
\n

या, यदि Maven/Gradle प्लगइन का उपयोग कर रहे हैं:

\n
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=9090
\n

Spring Boot में कॉन्फ़िगरेशन के सभी तरीकों में कमांड लाइन आर्गुमेंट्स का सबसे उच्च प्राथमिकता है। इसका मतलब है कि वे application.properties में लिखी गई बातों को भी ओवरराइड कर देंगे।

\n

इसके लिए आदर्श: Docker कंटेनर, Kubernetes, स्वचालित डिप्लॉयमेंट।

\n\n

तरीका 4: एनवायरनमेंट वेरिएबल्स — बारह-कारक एप्लिकेशन का मानक

\n

Spring Boot स्वचालित रूप से एनवायरनमेंट वेरिएबल्स को पढ़ता है और उन्हें प्रॉपर्टीज़ में बदल देता है। नियम सरल है: SERVER_PORT (अपर केस में, डॉट के बजाय अंडरस्कोर) server.port बन जाएगा।

\n

Linux/macOS में:

\n
export SERVER_PORT=9090\njava -jar myapp.jar
\n

Windows (cmd) में:

\n
set SERVER_PORT=9090\njava -jar myapp.jar
\n

Docker Compose में यह और भी सुंदर दिखता है:

\n
services:\n  myapp:\n    image: myapp:latest\n    ports:\n      - "9090:9090"\n    environment:\n      - SERVER_PORT=9090
\n

यह क्यों बढ़िया है: एनवायरनमेंट वेरिएबल्स रिपॉजिटरी में नहीं जाते, विभिन्न वातावरणों के लिए इन्हें बदलना आसान है, और ये 12-factor app पद्धति का पालन करते हैं।

\n\n

तरीका 5: प्रोग्रामेटिक कॉन्फ़िगरेशन — माइक्रोमैनेजमेंट के लिए

\n

कभी-कभी पोर्ट को डायनामिक रूप से गणना करने की आवश्यकता होती है (उदाहरण के लिए, एक मुफ्त पोर्ट ढूंढना या बाहरी सेवा से प्राप्त करना)। तब Java कोड मदद करता है।

\n

सबसे सरल विकल्प क्लास में setServerPort मेथड को ओवरराइड करना है

ब्लॉग

पुस्तक अनुशंसाएँ