স্প্রিং বুটে অ্যাপ্লিকেশন.আইএমএল বা বুটস্ট্র্যাপ.আইএমএলে কোনও সম্পত্তি রাখার মধ্যে পার্থক্য কী?


251

স্প্রিং বুটে অ্যাপ্লিকেশন.আইএমএল বা বুটস্ট্র্যাপ.আইএমএলে কোনও সম্পত্তি রাখার মধ্যে পার্থক্য কী? লগিং.কনফিগ ক্ষেত্রে, অ্যাপ্লিকেশনটি ভিন্নভাবে কাজ করে।


14
bootstrap.yml আমি [ spring-cloud-config] ( ক্লাউড.স্প্রিং.আইও / স্প্রিং- ক্লাউড- কনফিগ/… ) এর সাথে সুনির্দিষ্ট দেখতে পাচ্ছি এবং এটি সঠিক কনফিগারেশনটি অনুসন্ধান করার জন্য ব্যবহৃত কনফিগারেশন। কনফিগ তাই সেখানে সম্ভবত application.properties/yaml সামনে লোড হয়
zapl

উত্তর:


297

আমি কেবল 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


6
আপনি কি দয়া করে ব্যাখ্যা করতে পারেন কেন কনফিগার সার্ভারকে এই পরামিতিগুলি লাগাতে হবে bootstrap.yml?
নিও

31
স্প্রিং ক্লাউড ব্যবহার করার সময়, 'রিয়েল' কনফিগারেশন ডেটা সাধারণত সার্ভার থেকে লোড করা হয়। ইউআরএল পেতে (এবং অন্যান্য সংযোগের কনফিগারেশন, যেমন পাসওয়ার্ড ইত্যাদি) পেতে আপনার প্রয়োজন আগের বা "বুটস্ট্র্যাপ" কনফিগারেশন। সুতরাং, আপনি বুটস্ট্র্যাপ.আইএমএলে কনফিগার সার্ভারের বৈশিষ্ট্যগুলি রেখেছেন, যা আসল কনফিগারেশন ডেটা লোড করতে ব্যবহৃত হয় (যা সাধারণত কোন অ্যাপ্লিকেশনটিতে থাকে সেটিকে ওভাররাইড করে ym [যদি উপস্থিত থাকে])।
মাইক ম্যানসেল

10
কিছু সময় আমি ভাবছি যখন বসন্তটি নতুন আকর্ষণীয় বৈশিষ্ট্যগুলি নিয়ে আসে যা এটি নির্দিষ্টকরণের বাইরে চলে যায় বা তারা ইতিমধ্যে এটির কনভেনশন ধারণ করে এবং কোনও কিছুই নির্দিষ্ট করার প্রয়োজন হয় না এবং সমস্ত কিছু নিজস্বভাবে সমাধান করা হয় যদি বসন্ত না হয় তবে বসন্ত বুট হয় এবং ভবিষ্যতের বসন্তে হতে পারে- বুট-বুট;)
সৌরভ

আপনি যখন বলবেন অ্যাপ্লিকেশন.আইএমএল এর আগে বুটস্ট্র্যাপ.আইএমএল লোড হয়। কিন্তু আমি যখন আবেদন.yml অপসারণ করি। আমার অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ.আইএমএল পড়েনি। তা কেন?
জেসি

আমাদের হাইলাইট করতে হবে যে বুটস্ট্র্যাপ ফাইলটি কখনই ওভাররাইড হয় না কারণ এর আরও প্রাধান্য রয়েছে। ডকুমেন্টেশন অনুসারে টিমের স্প্রিং
কেলগুইন

84

bootstrap.yml অথবা bootstrap.properties

আপনি কেবল স্প্রিং ক্লাউড ব্যবহার করছেন এবং আপনার অ্যাপ্লিকেশনটির কনফিগারেশন কোনও রিমোট কনফিগারেশন সার্ভারে (যেমন স্প্রিং ক্লাউড কনফিগার সার্ভার) সঞ্চিত থাকে তবে এটি কেবল ব্যবহৃত / প্রয়োজন ।

ডকুমেন্টেশন থেকে:

একটি স্প্রিং ক্লাউড অ্যাপ্লিকেশন একটি "বুটস্ট্র্যাপ" প্রসঙ্গ তৈরি করে পরিচালিত করে, যা মূল অ্যাপ্লিকেশনটির পিতামাতার প্রসঙ্গ। বাক্সের বাইরে এটি বাহ্যিক উত্স থেকে কনফিগারেশন বৈশিষ্ট্যগুলি লোড করার জন্য , এবং স্থানীয় বাহ্যিক কনফিগারেশন ফাইলগুলিতে বৈশিষ্ট্যগুলি ডিক্রিপ্ট করার জন্য দায়ী

লক্ষ্য করুন bootstrap.ymlবা bootstrap.properties করতে অতিরিক্ত কনফিগারেশন (যেমন অক্ষমতা) কিন্তু সাধারণত আপনি শুধু এখানেই বুটস্ট্র্যাপ কনফিগ করা প্রয়োজন ধারণ করে।

সাধারণত এটিতে দুটি বৈশিষ্ট্য থাকে:

  • কনফিগারেশন সার্ভারের অবস্থান ( spring.cloud.config.uri)
  • আবেদনের নাম ( spring.application.name)

শুরু হওয়ার পরে, স্প্রিং ক্লাউড অ্যাপ্লিকেশনটির নাম সহ কনফিগার সার্ভারে একটি HTTP কল করে এবং সেই অ্যাপ্লিকেশনটির কনফিগারেশনটি পুনরুদ্ধার করে।

application.yml অথবা application.properties

স্ট্যান্ডার্ড অ্যাপ্লিকেশন কনফিগারেশন ধারণ করে - সাধারণত ডিফল্ট কনফিগারেশন যেহেতু বুটস্ট্র্যাপ প্রক্রিয়া চলাকালীন পুনরুদ্ধারকৃত কোনও কনফিগারেশন এখানে সংজ্ঞাযুক্ত কনফিগারেশনকে ওভাররাইড করে।


34

এই উত্তরটি হয়েছে খুব সুন্দর বইয়ে "ব্যাখ্যা 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

অন্যদিকে বুটস্ট্র্যাপ.আইএমএল স্প্রিং-ক্লাউড-কনফিগারেশনের সাথে সুনির্দিষ্ট এবং অ্যাপ্লিকেশন.আইএমএল এর আগে লোড হয়

বুটস্ট্র্যাপ.আইএমএল কেবল তখনই প্রয়োজন হয় যদি আপনি স্প্রিং ক্লাউড ব্যবহার করছেন এবং আপনার মাইক্রোসারওয়াইস কনফিগারেশনটি একটি রিমোট স্প্রিং ক্লাউড কনফিগারেশন সার্ভারে সঞ্চয় করা আছে।

বুটস্ট্র্যাপ.আইএমএল সম্পর্কে গুরুত্বপূর্ণ পয়েন্ট

  1. স্প্রিং ক্লাউড কনফিগার সার্ভারের সাথে ব্যবহার করার সময়, আপনি নীচের বৈশিষ্ট্যগুলি ব্যবহার করে অ্যাপ্লিকেশন-নাম এবং কনফিগার গিট অবস্থান নির্দিষ্ট করতে পারবেন।
বসন্ত.অ্যাপ্লিকেশন.নাম: "অ্যাপ্লিকেশন-নাম"
বসন্তক্লাউডকনফিগ.সার্वर.git.uri: "গিট-ইউরি-কনফিগারেশন"

  1. যখন মাইক্রোসার্ফেসিগুলি (ক্লাউড কনফিগার সার্ভার ব্যতীত) ব্যবহার করা হয় তখন আমাদের নীচের বৈশিষ্ট্যগুলি ব্যবহার করে কনফিগার সার্ভারের অ্যাপ্লিকেশন নাম এবং অবস্থান নির্দিষ্ট করতে হবে need
spring.application.name: 
spring.cloud.config.uri: 
  1. এই বৈশিষ্ট্য ফাইলটিতে স্প্রিং ক্লাউড পরিবেশের সাথে সম্পর্কিত অন্যান্য কনফিগারেশন থাকতে পারে যেমন ইউরেকা সার্ভারের অবস্থান, এনক্রিপশন / ডিক্রিপশন সম্পর্কিত বৈশিষ্ট্যগুলি।

শুরু হওয়ার পরে, স্প্রিং ক্লাউড অ্যাপ্লিকেশনটির নাম সহ স্প্রিং ক্লাউড কনফিগার সার্ভারে একটি HTTP (এস) কল করে এবং সেই অ্যাপ্লিকেশনটির কনফিগারেশনটি পুনরুদ্ধার করে।

অ্যাপ্লিকেশন.আইএমএলটিতে মাইক্রোসার্চিসের জন্য ডিফল্ট কনফিগারেশন এবং বুটস্ট্র্যাপ প্রক্রিয়া চলাকালীন (ক্লাউড কনফিগার সার্ভার থেকে প্রাপ্ত) কোনও কনফিগারেশন অ্যাপ্লিকেশন.আইএমএল-এ সংজ্ঞায়িত কনফিগারেশনকে ওভাররাইড করবে


5

এখানে আমার 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


4

ঠিক আছে, আমি ইতিমধ্যে এই বিষয়টিতে উত্তরগুলির সাথে সম্পূর্ণ সম্মত:

  • bootstrap.ymlদূরবর্তী কনফিগারেশনটি কোথায় তা চিহ্নিত করে এবং এই দূরবর্তী কনফিগারেশন সহ বুটস্ট্র্যাপ অ্যাপ্লিকেশন প্রসঙ্গটি তৈরি করা হয়েছে এমন পরামিতিগুলি সংরক্ষণ করতে ব্যবহৃত হয় ।

প্রকৃতপক্ষে, এটি সাধারণ বৈশিষ্ট্যগুলি যা করতে ঠিক তেমন সঞ্চয় করতে সক্ষম application.yml। তবে এই কৌতুকপূর্ণ বিষয়ে মনোযোগ দিন:

  • আপনি যদি সম্পত্তিগুলিতে রাখেন তবে bootstrap.ymlতারা অ্যাপ্লিকেশন.আইএমএল সহ প্রায় কোনও সম্পত্তি উত্সের চেয়ে কম অগ্রাধিকার পাবে। এখানে বর্ণিত হিসাবে ।

আসুন এটি পরিষ্কার করুন, এর সাথে সম্পর্কিত দুটি ধরণের রয়েছে bootstrap.yml:

  • বুটস্ট্র্যাপ পর্যায়ে লোড হওয়া বৈশিষ্ট্য। আমরা bootstrap.ymlবৈশিষ্ট্যধারীদের (একটি ফাইল সিস্টেম, গিট সংগ্রহস্থল বা অন্য কিছু) সন্ধান করতে ব্যবহার করি এবং আমরা যে বৈশিষ্ট্যগুলি পেয়েছি সেগুলি উচ্চতর গুরুত্ব সহকারে রয়েছে, সুতরাং সেগুলি স্থানীয় কনফিগারেশন দ্বারা ওভাররাইড করা যায় না। এখানে বর্ণিত হিসাবে ।
  • বৈশিষ্ট্য যে bootstrap.yml। প্রথমদিকে যেমন ব্যাখ্যা করা হয়েছে, তারা নিম্নতর প্রাধান্য পাবে। ডিফল্ট সেট করতে তাদের ব্যবহার করুন সম্ভবত একটি ভাল ধারণা।

সুতরাং স্প্রিং বুটে কোনও সম্পত্তি রাখার application.ymlবা তার bootstrap.ymlমধ্যে পার্থক্যগুলি হ'ল :

  • বুটস্ট্র্যাপ পর্যায়ে কনফিগারেশন ফাইল লোড করার জন্য বৈশিষ্ট্যগুলি কেবল এতে স্থাপন করা যেতে পারে bootstrap.yml
  • অন্যান্য সমস্ত ধরণের সম্পত্তি হিসাবে, application.ymlএগুলিতে রাখুন উচ্চতর প্রাধান্য পাবে।

3

বুটস্ট্র্যাপ.আইএমএল সার্ভার থেকে কনফিগার আনতে ব্যবহৃত হয়। এটি একটি স্প্রিং ক্লাউড অ্যাপ্লিকেশন বা অন্যদের জন্য হতে পারে। সাধারণত এটি দেখতে:

spring:
  application:
    name: "app-name"
  cloud:
    config:
      uri: ${config.server:http://some-server-where-config-resides}

যখন আমরা অ্যাপ্লিকেশন শুরু করি এটি প্রদত্ত সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করে এবং রান / ডিবাগ কনফিগারেশনে উল্লিখিত স্প্রিং প্রোফাইলের উপর ভিত্তি করে কনফিগারেশনটি পড়তে চেষ্টা করে। বুটস্ট্র্যাপ.আইএমএল প্রথমটি লোড করে

সার্ভারটি যদি না পারা যায় তবে অ্যাপ্লিকেশনটি আরও এগিয়ে যেতে অক্ষম হতে পারে। তবে, প্রোফাইলের সাথে মেলে এমন কনফিগারেশনগুলি স্থানীয়ভাবে উপস্থিত থাকলে সার্ভার কনফিগারেশনগুলি ওভাররাইড হয়ে যায়।

ভাল পদ্ধতির:

স্থানীয়দের জন্য পৃথক প্রোফাইল বজায় রাখুন এবং বিভিন্ন প্রোফাইল ব্যবহার করে অ্যাপটি চালান।


1

বুটস্ট্র্যাপ.আইএমএল এর অন্য ব্যবহার হ'ল কুবেরনেটসের কনফিগারেশন এবং গোপনীয় সংস্থান থেকে কনফিগারেশন লোড করা । অ্যাপ্লিকেশনটিতে স্প্রিং-ক্লাউড-স্টার্টার-কুবারনেটসের নির্ভরতা আমদানি করতে হবে ।

স্প্রিং ক্লাউড কনফিগারেশনের মতো এটিও বুটস্ট্র্যাপ বাক্যাংশের সময়ে ঘটতে হবে।

দস্তাবেজগুলি থেকে:

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

0

আপনি বসন্ত বুট অ্যাপ্লিকেশন শুরু করার সাথে সাথে বুটস্ট্র্যাপ.আইএমএল প্রথম ফাইল লোড হয় এবং অ্যাপ্লিকেশন শুরু হলে প্রপার্টি লোড হয়। সুতরাং, আপনি রাখুন, আপনার কনফিগার সার্ভারের শংসাপত্রাদি ইত্যাদি হতে পারে, বুটস্ট্র্যাপ.আইএমএল-এ যা লোডিং অ্যাপ্লিকেশনের সময় প্রয়োজন হয় এবং তারপরে অ্যাপ্লিকেশন p প্রপার্টি আপনি রাখতে পারেন ডাটাবেস ইউআরএল ইত্যাদি etc.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.