স্প্রিং বুট 1. এক্স এবং স্প্রিং বুট 2. এক্স এর সম্পর্কে একই বিকল্প এবং আচরণ প্রদান করে না Externalized Configuration
।
এম। ডেনুমের খুব ভাল উত্তরটি স্প্রিং বুট 1 নির্দিষ্ট করে।
আমি এখানে স্প্রিং বুট 2 এর জন্য আপডেট করব।
পরিবেশগত বৈশিষ্ট্য উত্স এবং আদেশ
স্প্রিং বুট 2 একটি খুব নির্দিষ্ট PropertySource
ক্রম ব্যবহার করে যা মানগুলি বোধগম্য ওভাররাইডিংকে মঞ্জুরি দেওয়ার জন্য ডিজাইন করা হয়েছে। বৈশিষ্ট্যগুলি নিম্নলিখিত ক্রমে বিবেচনা করা হয়:
আপনার হোম ডিরেক্টরিতে ডিভলটোলস গ্লোবাল সেটিংসের বৈশিষ্ট্য (dev / .spring-boot-devtools.properties যখন ডিভলটুলগুলি সক্রিয় থাকে)।
@TestPropertySource
আপনার পরীক্ষায় টিকা।
@SpringBootTest#properties
আপনার পরীক্ষাগুলিতে টিকা বিশিষ্টতা। কমান্ড লাইন আর্গুমেন্ট.
বৈশিষ্ট্যগুলি SPRING_APPLICATION_JSON
(ইনভারলাইন ভেরিয়েবল বা সিস্টেমের সম্পত্তিটিতে এম্বেড ইনসেল জেএসএন)।
ServletConfig
আরডি পরামিতি।
ServletContext
আরডি পরামিতি।
জেএনডিআই বৈশিষ্ট্য থেকে java:comp/env
।
জাভা সিস্টেমের বৈশিষ্ট্য ( System.getProperties()
)।
ওএস এনভায়রনমেন্ট ভেরিয়েবল।
একটি RandomValuePropertySource
যা এলোমেলোভাবে বৈশিষ্ট্যযুক্ত *
আপনার প্যাকেজড জারের বাইরে প্রোফাইল-নির্দিষ্ট অ্যাপ্লিকেশন বৈশিষ্ট্য ( application-{profile}.properties
এবং ওয়াইএএমএল রূপগুলি))
প্রোফাইল-নির্দিষ্ট অ্যাপ্লিকেশন বৈশিষ্ট্যগুলি আপনার জারের ভিতরে প্যাকেজযুক্ত ( application-{profile}.properties
এবং ওয়াইএএমএল রূপগুলি)।
আপনার প্যাকেজড জারের বাইরে অ্যাপ্লিকেশন বৈশিষ্ট্য ( application.properties
এবং ওয়াইএএমএল রূপগুলি)।
অ্যাপ্লিকেশন বৈশিষ্ট্যগুলি আপনার জারের ভিতরে প্যাক করা হয়েছে ( application.properties
এবং ওয়াইএএমএল রূপগুলি)।
@PropertySource
আপনার @Configuration
ক্লাসে টিকা । ডিফল্ট বৈশিষ্ট্য (সেটিংস দ্বারা নির্দিষ্ট
SpringApplication.setDefaultProperties
)।
বাহ্যিক বৈশিষ্ট্য ফাইলগুলি নির্দিষ্ট করতে এই বিকল্পগুলির মধ্যে আপনার আগ্রহ থাকতে হবে:
আপনার প্যাকেজড জারের বাইরে প্রোফাইল-নির্দিষ্ট অ্যাপ্লিকেশন বৈশিষ্ট্য ( application-{profile}.properties
এবং ওয়াইএএমএল রূপগুলি))
আপনার প্যাকেজড জারের বাইরে অ্যাপ্লিকেশন বৈশিষ্ট্য ( application.properties
এবং ওয়াইএএমএল রূপগুলি)।
@PropertySource
আপনার @Configuration
ক্লাসে টিকা । ডিফল্ট বৈশিষ্ট্য (সেটিংস দ্বারা নির্দিষ্ট
SpringApplication.setDefaultProperties
)।
আপনি এই 3 টি বিকল্পের মধ্যে কেবল একটির ব্যবহার করতে পারেন বা আপনার প্রয়োজনীয়তা অনুসারে এগুলি একত্রিত করতে পারেন।
উদাহরণস্বরূপ, খুব সাধারণ ক্ষেত্রে কেবলমাত্র প্রোফাইল-নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করা যথেষ্ট তবে অন্যান্য ক্ষেত্রে আপনি প্রোফাইল-নির্দিষ্ট বৈশিষ্ট্য, ডিফল্ট বৈশিষ্ট্য এবং উভয়ই ব্যবহার করতে চাইতে পারেন @PropertySource
।
অ্যাপ্লিকেশন.প্রপার্টি ফাইলগুলির জন্য ডিফল্ট অবস্থান
আমাদের সম্পর্কে application.properties
ফাইল (এবং বৈকল্পিক) ডিফল্ট স্প্রিং লোড তাদের এবং নিম্নলিখিত ক্রমে এগুলো পরিবেশে তাদের বৈশিষ্ট্য যোগ দ্বারা:
উচ্চতর অগ্রাধিকারগুলি এত আক্ষরিক:
classpath:/,classpath:/config/,file:./,file:./config/
।
নির্দিষ্ট নাম সহ বৈশিষ্ট্য ফাইল কীভাবে ব্যবহার করবেন?
ডিফল্ট অবস্থানগুলি সর্বদা পর্যাপ্ত থাকে না: ডিফল্ট ফাইলের মতো ডিফল্ট অবস্থানগুলি ( application.properties
) পছন্দ না করে। এছাড়াও, ওপি প্রশ্নের মতো আপনাকে application.properties
(এবং বৈকল্পিক) ব্যতীত একাধিক কনফিগারেশন ফাইল নির্দিষ্ট করতে হবে ।
সুতরাংspring.config.name
যথেষ্ট হবে না।
এই ক্ষেত্রে আপনার spring.config.location
পরিবেশ সম্পত্তি (যা ডিরেক্টরি স্থান বা ফাইল পাথের কমা-বিচ্ছিন্ন তালিকা) ব্যবহার করে একটি স্পষ্ট অবস্থান সরবরাহ করা উচিত ।
ফাইলের নামগুলি সম্পর্কে নিখরচায় থাকার জন্য ডিরেক্টরিগুলির তালিকাতে ফাইল পাথের তালিকার পক্ষে রয়েছে।
উদাহরণস্বরূপ এটি করতে:
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
এই উপায়টি সর্বাধিক ভারবোজ যা কেবল ফোল্ডারটি নির্দিষ্ট করে তবে এটি আমাদের কনফিগারেশন ফাইলগুলি খুব সূক্ষ্মভাবে নির্দিষ্ট করার এবং কার্যকরভাবে ব্যবহৃত বৈশিষ্ট্যগুলি স্পষ্ট করে ডকুমেন্ট করার উপায়।
স্প্রিং.কনফিগ.লোকেশন এখন ডিফল্ট অবস্থানগুলিতে তাদের পরিবর্তে পরিবর্তিত করে
স্প্রিং বুট 1 এর সাথে spring.config.location
যুক্তিটি বসন্তের পরিবেশে নির্দিষ্ট অবস্থানগুলি যুক্ত করে।
তবে স্প্রিং বুট 2 থেকে, spring.config.location
বসন্তের পরিবেশে নির্দিষ্ট অবস্থানগুলি দ্বারা ডকুমেন্টেশনে বর্ণিত স্প্রিংয়ের দ্বারা ব্যবহৃত ডিফল্ট অবস্থানগুলি প্রতিস্থাপন করে ।
কাস্টম কনফিগারেশন অবস্থানগুলি ব্যবহার করে কনফিগার করা হয়
spring.config.location
, তারা ডিফল্ট অবস্থানগুলি প্রতিস্থাপন করে। উদাহরণস্বরূপ, যদি spring.config.location
মান মাধ্যমে কনফিগার করা হয়েছে
classpath:/custom-config/
, file:./custom-config/
, সার্চ অর্ডার নিম্নলিখিত হয়ে:
file:./custom-config/
classpath:custom-config/
spring.config.location
কোনও application.properties
ফাইল স্পষ্টভাবে নির্দিষ্ট করা উচিত তা নিশ্চিত করার এখন একটি উপায় ।
উবার জেআরগুলির জন্য যা প্যাকেজ করার কথা নয়application.properties
ফাইল করার , এটি দুর্দান্ত।
spring.config.location
স্প্রিং বুট 2 ব্যবহার করার সময় পুরানো আচরণ ধরে রাখতে আপনি ডকুমেন্টেশনের দ্বারা বর্ণিত অবস্থানগুলি যোগ করার spring.config.additional-location
পরিবর্তে নতুন সম্পত্তিটি ব্যবহার করতে পারেন :spring.config.location
বিকল্পভাবে, কাস্টম কনফিগারেশন অবস্থানগুলি ব্যবহার করে কনফিগার করা হয়
spring.config.additional-location
, সেগুলি ডিফল্ট অবস্থানগুলি ছাড়াও ব্যবহৃত হয়।
প্রস্তুতিতে
সুতরাং ধরে নেওয়া যায় যে ওপি প্রশ্নের মতোই, আপনার কাছে উল্লেখ করার জন্য 2 টি বাহ্যিক বৈশিষ্ট্য ফাইল এবং উবার জারে অন্তর্ভুক্ত 1 টি বৈশিষ্ট্য ফাইল রয়েছে।
আপনার নির্দিষ্ট করা কনফিগারেশন ফাইলগুলি ব্যবহার করতে:
-Dspring.config.location=classpath:/job1.properties,classpath:/job2.properties,classpath:/applications.properties
এগুলিতে ডিফল্ট অবস্থানগুলিতে কনফিগারেশন ফাইল যুক্ত করতে:
-Dspring.config.additional-location=classpath:/job1.properties,classpath:/job2.properties
classpath:/applications.properties
পূর্ববর্তী উদাহরণে ডিফল্ট লোকেশনগুলির প্রয়োজন হয় না এবং এটি ডিফল্ট অবস্থানগুলি এখানে ওভাররাইট করা হয় না তবে প্রসারিত হয়।
application.properties
সবসময় লোড হবে সঙ্গেspring.config.location
আপনি অতিরিক্ত কনফিগারেশন এমন অবস্থানগুলি ফাইলের জন্য চেক করা হয় যোগ করতে পারেন (যেমন যখন এটি একটি দিয়ে শেষ হয়/
) তবে যদি আপনি ঐ লোড হবে ফাইলগুলিতে সেখানে যা পয়েন্টে কমা দ্বারা পৃথক করা তালিকা করা। এটি এখানে