উত্তর:
আমি কেবল Spring Cloud
ছেলেদের জিজ্ঞাসা করেছি এবং ভেবেছি আমার এখানে থাকা তথ্যটি ভাগ করে নেওয়া উচিত।
bootstrap.yml
আগে লোড করা হয় application.yml
।
এটি নিম্নলিখিতগুলির জন্য সাধারণত ব্যবহৃত হয়:
spring.application.name
এবং এর spring.cloud.config.server.git.uri
ভিতরেbootstrap.yml
encryption/decryption
তথ্যপ্রযুক্তিগতভাবে, bootstrap.yml
একটি পিতামাতার স্প্রিং দ্বারা লোড হয় ApplicationContext
। এই পিতামাতার ApplicationContext
ব্যবহারের আগে লোড করা হয় application.yml
।
bootstrap.yml
?
bootstrap.yml
অথবা bootstrap.properties
আপনি কেবল স্প্রিং ক্লাউড ব্যবহার করছেন এবং আপনার অ্যাপ্লিকেশনটির কনফিগারেশন কোনও রিমোট কনফিগারেশন সার্ভারে (যেমন স্প্রিং ক্লাউড কনফিগার সার্ভার) সঞ্চিত থাকে তবে এটি কেবল ব্যবহৃত / প্রয়োজন ।
ডকুমেন্টেশন থেকে:
একটি স্প্রিং ক্লাউড অ্যাপ্লিকেশন একটি "বুটস্ট্র্যাপ" প্রসঙ্গ তৈরি করে পরিচালিত করে, যা মূল অ্যাপ্লিকেশনটির পিতামাতার প্রসঙ্গ। বাক্সের বাইরে এটি বাহ্যিক উত্স থেকে কনফিগারেশন বৈশিষ্ট্যগুলি লোড করার জন্য , এবং স্থানীয় বাহ্যিক কনফিগারেশন ফাইলগুলিতে বৈশিষ্ট্যগুলি ডিক্রিপ্ট করার জন্য দায়ী ।
লক্ষ্য করুন bootstrap.yml
বা bootstrap.properties
করতে অতিরিক্ত কনফিগারেশন (যেমন অক্ষমতা) কিন্তু সাধারণত আপনি শুধু এখানেই বুটস্ট্র্যাপ কনফিগ করা প্রয়োজন ধারণ করে।
সাধারণত এটিতে দুটি বৈশিষ্ট্য থাকে:
spring.cloud.config.uri
)spring.application.name
)শুরু হওয়ার পরে, স্প্রিং ক্লাউড অ্যাপ্লিকেশনটির নাম সহ কনফিগার সার্ভারে একটি HTTP কল করে এবং সেই অ্যাপ্লিকেশনটির কনফিগারেশনটি পুনরুদ্ধার করে।
application.yml
অথবা application.properties
স্ট্যান্ডার্ড অ্যাপ্লিকেশন কনফিগারেশন ধারণ করে - সাধারণত ডিফল্ট কনফিগারেশন যেহেতু বুটস্ট্র্যাপ প্রক্রিয়া চলাকালীন পুনরুদ্ধারকৃত কোনও কনফিগারেশন এখানে সংজ্ঞাযুক্ত কনফিগারেশনকে ওভাররাইড করে।
এই উত্তরটি হয়েছে খুব সুন্দর বইয়ে "ব্যাখ্যা Microservices ইন্টারভিউ প্রশ্ন জাভা ডেভেলপাররা (বসন্ত বুট, স্প্রিং ক্লাউড, ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলি) জন্য, দ্বারা Munish Chandel , সংস্করণ 1.30, 25.03.2018।
নীচের বিষয়বস্তু এই বইটি থেকে নেওয়া হয়েছে, এবং এই উত্তরের মোট কৃতিত্ব বইয়ের লেখক অর্থাৎ মুনিশ চ্যান্ডেলের কাছে
application.yml
অ্যাপ্লিকেশন.আইএমএল / অ্যাপ্লিকেশন.প্রপার্টি ফাইলটি স্প্রিং বুট অ্যাপ্লিকেশনগুলির জন্য নির্দিষ্ট। আপনি যদি কোনও অ্যাপ্লিকেশনটির বাহ্যিক বৈশিষ্ট্যের অবস্থান পরিবর্তন না করেন তবে স্প্রিং বুটটি সর্বদা নিম্নলিখিত অবস্থান থেকে অ্যাপ্লিকেশন.আইএমএল লোড করবে :
/src/main/resources/application.yml
আপনি এই ফাইলটিতে আপনার আবেদনের জন্য সমস্ত বাহ্যিক বৈশিষ্ট্য সংরক্ষণ করতে পারেন। যে কোনও স্প্রিং বুট প্রকল্পে পাওয়া যায় এমন সাধারণ বৈশিষ্ট্যগুলি এখানে পাওয়া যাবে: https://docs.spring.io/spring-boot/docs/current/references/html/common-application-properties.html আপনি এই বৈশিষ্ট্যগুলি কাস্টমাইজ করতে পারেন আপনার অ্যাপ্লিকেশন প্রয়োজন অনুযায়ী। নমুনা ফাইলটি নীচে দেখানো হয়েছে:
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
অন্যদিকে বুটস্ট্র্যাপ.আইএমএল স্প্রিং-ক্লাউড-কনফিগারেশনের সাথে সুনির্দিষ্ট এবং অ্যাপ্লিকেশন.আইএমএল এর আগে লোড হয়
বুটস্ট্র্যাপ.আইএমএল কেবল তখনই প্রয়োজন হয় যদি আপনি স্প্রিং ক্লাউড ব্যবহার করছেন এবং আপনার মাইক্রোসারওয়াইস কনফিগারেশনটি একটি রিমোট স্প্রিং ক্লাউড কনফিগারেশন সার্ভারে সঞ্চয় করা আছে।
বুটস্ট্র্যাপ.আইএমএল সম্পর্কে গুরুত্বপূর্ণ পয়েন্ট
বসন্ত.অ্যাপ্লিকেশন.নাম: "অ্যাপ্লিকেশন-নাম" বসন্তক্লাউডকনফিগ.সার্वर.git.uri: "গিট-ইউরি-কনফিগারেশন"
spring.application.name: spring.cloud.config.uri:
শুরু হওয়ার পরে, স্প্রিং ক্লাউড অ্যাপ্লিকেশনটির নাম সহ স্প্রিং ক্লাউড কনফিগার সার্ভারে একটি HTTP (এস) কল করে এবং সেই অ্যাপ্লিকেশনটির কনফিগারেশনটি পুনরুদ্ধার করে।
অ্যাপ্লিকেশন.আইএমএলটিতে মাইক্রোসার্চিসের জন্য ডিফল্ট কনফিগারেশন এবং বুটস্ট্র্যাপ প্রক্রিয়া চলাকালীন (ক্লাউড কনফিগার সার্ভার থেকে প্রাপ্ত) কোনও কনফিগারেশন অ্যাপ্লিকেশন.আইএমএল-এ সংজ্ঞায়িত কনফিগারেশনকে ওভাররাইড করবে
এখানে আমার 2 সেন্ট মাত্র ..
বুটস্ট্র্যাপ.আইএমএল বা বুটস্ট্র্যাপ.প্রোপার্টিগুলি স্প্রিং ক্লাউড সার্ভার থেকে কনফিগার আনতে ব্যবহৃত হয়।
উদাহরণস্বরূপ, আমার বুটস্ট্র্যাপ.প্রোপার্টি ফাইলগুলিতে আমার কাছে নিম্নলিখিত কনফিগার রয়েছে
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
অ্যাপ্লিকেশনটি শুরু করার সময়, এটি HTTP: // লোকালহোস্ট: 8888 এ সংযুক্ত হয়ে পরিষেবাটির জন্য কনফিগারেশনটি আনার চেষ্টা করে এবং স্প্রিং ক্লাউড কনফিগারেশনের সার্ভারে উপস্থিত গণনা- সংরক্ষণ.প্রোপার্টিগুলিতে দেখে
আপনি যখন এটি শুরু করবেন তখন ক্যালকুলেশন-পরিষেবাদির লগ থেকে একইটি বৈধ করতে পারবেন
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
ঠিক আছে, আমি ইতিমধ্যে এই বিষয়টিতে উত্তরগুলির সাথে সম্পূর্ণ সম্মত:
bootstrap.yml
দূরবর্তী কনফিগারেশনটি কোথায় তা চিহ্নিত করে এবং এই দূরবর্তী কনফিগারেশন সহ বুটস্ট্র্যাপ অ্যাপ্লিকেশন প্রসঙ্গটি তৈরি করা হয়েছে এমন পরামিতিগুলি সংরক্ষণ করতে ব্যবহৃত হয় ।প্রকৃতপক্ষে, এটি সাধারণ বৈশিষ্ট্যগুলি যা করতে ঠিক তেমন সঞ্চয় করতে সক্ষম application.yml
। তবে এই কৌতুকপূর্ণ বিষয়ে মনোযোগ দিন:
bootstrap.yml
তারা অ্যাপ্লিকেশন.আইএমএল সহ প্রায় কোনও সম্পত্তি উত্সের চেয়ে কম অগ্রাধিকার পাবে। এখানে বর্ণিত হিসাবে ।আসুন এটি পরিষ্কার করুন, এর সাথে সম্পর্কিত দুটি ধরণের রয়েছে bootstrap.yml
:
bootstrap.yml
বৈশিষ্ট্যধারীদের (একটি ফাইল সিস্টেম, গিট সংগ্রহস্থল বা অন্য কিছু) সন্ধান করতে ব্যবহার করি এবং আমরা যে বৈশিষ্ট্যগুলি পেয়েছি সেগুলি উচ্চতর গুরুত্ব সহকারে রয়েছে, সুতরাং সেগুলি স্থানীয় কনফিগারেশন দ্বারা ওভাররাইড করা যায় না। এখানে বর্ণিত হিসাবে ।bootstrap.yml
। প্রথমদিকে যেমন ব্যাখ্যা করা হয়েছে, তারা নিম্নতর প্রাধান্য পাবে। ডিফল্ট সেট করতে তাদের ব্যবহার করুন সম্ভবত একটি ভাল ধারণা।সুতরাং স্প্রিং বুটে কোনও সম্পত্তি রাখার application.yml
বা তার bootstrap.yml
মধ্যে পার্থক্যগুলি হ'ল :
bootstrap.yml
।application.yml
এগুলিতে রাখুন উচ্চতর প্রাধান্য পাবে।বুটস্ট্র্যাপ.আইএমএল সার্ভার থেকে কনফিগার আনতে ব্যবহৃত হয়। এটি একটি স্প্রিং ক্লাউড অ্যাপ্লিকেশন বা অন্যদের জন্য হতে পারে। সাধারণত এটি দেখতে:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
যখন আমরা অ্যাপ্লিকেশন শুরু করি এটি প্রদত্ত সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করে এবং রান / ডিবাগ কনফিগারেশনে উল্লিখিত স্প্রিং প্রোফাইলের উপর ভিত্তি করে কনফিগারেশনটি পড়তে চেষ্টা করে।
সার্ভারটি যদি না পারা যায় তবে অ্যাপ্লিকেশনটি আরও এগিয়ে যেতে অক্ষম হতে পারে। তবে, প্রোফাইলের সাথে মেলে এমন কনফিগারেশনগুলি স্থানীয়ভাবে উপস্থিত থাকলে সার্ভার কনফিগারেশনগুলি ওভাররাইড হয়ে যায়।
ভাল পদ্ধতির:
স্থানীয়দের জন্য পৃথক প্রোফাইল বজায় রাখুন এবং বিভিন্ন প্রোফাইল ব্যবহার করে অ্যাপটি চালান।
বুটস্ট্র্যাপ.আইএমএল এর অন্য ব্যবহার হ'ল কুবেরনেটসের কনফিগারেশন এবং গোপনীয় সংস্থান থেকে কনফিগারেশন লোড করা । অ্যাপ্লিকেশনটিতে স্প্রিং-ক্লাউড-স্টার্টার-কুবারনেটসের নির্ভরতা আমদানি করতে হবে ।
স্প্রিং ক্লাউড কনফিগারেশনের মতো এটিও বুটস্ট্র্যাপ বাক্যাংশের সময়ে ঘটতে হবে।
দস্তাবেজগুলি থেকে:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
config:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a ConfigMap named c1 in namespace default-namespace
- name: c1
সুতরাং মেটা.নাম-এর ডিফল্ট-নাম সহ কনফিগারেশন সংস্থানে থাকা বৈশিষ্ট্যগুলি অ্যাপ্লিকেশন.আইএমএল-এর বৈশিষ্ট্যগুলির মতোই রেফারেন্স করা যায়
এবং একই প্রক্রিয়া গোপনীয়তার জন্য প্রযোজ্য:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
secrets:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a Secret named s1 in namespace default-namespace
- name: s1
আপনি বসন্ত বুট অ্যাপ্লিকেশন শুরু করার সাথে সাথে বুটস্ট্র্যাপ.আইএমএল প্রথম ফাইল লোড হয় এবং অ্যাপ্লিকেশন শুরু হলে প্রপার্টি লোড হয়। সুতরাং, আপনি রাখুন, আপনার কনফিগার সার্ভারের শংসাপত্রাদি ইত্যাদি হতে পারে, বুটস্ট্র্যাপ.আইএমএল-এ যা লোডিং অ্যাপ্লিকেশনের সময় প্রয়োজন হয় এবং তারপরে অ্যাপ্লিকেশন p প্রপার্টি আপনি রাখতে পারেন ডাটাবেস ইউআরএল ইত্যাদি etc.
bootstrap.yml
আমি [spring-cloud-config
] ( ক্লাউড.স্প্রিং.আইও / স্প্রিং- ক্লাউড- কনফিগ/… ) এর সাথে সুনির্দিষ্ট দেখতে পাচ্ছি এবং এটি সঠিক কনফিগারেশনটি অনুসন্ধান করার জন্য ব্যবহৃত কনফিগারেশন। কনফিগ তাই সেখানে সম্ভবত application.properties/yaml সামনে লোড হয়