এক্সএমএল কনফিগারেশন বনাম টিকা ভিত্তিক কনফিগারেশন [বন্ধ]


131

কয়েকটি বড় প্রকল্পে আমি ইদানীং কাজ করে যাচ্ছি বলে মনে হচ্ছে একটি বা অন্যটি (এক্সএমএল বা টীকাগুলি) বাছাই করা ক্রমশ গুরুত্বপূর্ণ হয়ে উঠছে। প্রকল্পগুলি বৃদ্ধি করার সাথে সাথে ধারাবাহিকতা রক্ষণাবেক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।

আমার প্রশ্নগুলি হ'ল এনটেশন-ভিত্তিক কনফিগারেশনের মাধ্যমে এক্সএমএল-ভিত্তিক কনফিগারেশনের সুবিধাগুলি কী কী এবং এক্সএমএল-ভিত্তিক কনফিগারেশনের উপর এনটেশন-ভিত্তিক কনফিগারেশনের সুবিধাগুলি কী কী?


ধরে নিচ্ছি আপনার পছন্দ মতো এনোটেশন @Componentএবং এটি @Autowired, এটি একটি মিথ্যা দ্বৈতত্ত্ব। জাভা কনফিগ এবং গ্রোভি কনফিগারেশন সহ আপনার কনফিগারেশন তৈরির অন্যান্য উপায় রয়েছে ।
বেকার


খুব এই এক চেক করুন stackoverflow.com/questions/8428439/...
pramodc84

উত্তর:


199

টীকাগুলির তাদের ব্যবহার রয়েছে, তবে এক্সএমএল কনফিগারেশনটি মেরে ফেলার জন্য তারা রূপালী বুলেট নয়। আমি দুজনের মিশ্রণের পরামর্শ দিচ্ছি!

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

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

আমি জেপিএ টীকাগুলি ব্যবহার করি নি, সুতরাং আমি জানি না সেগুলি কতটা ভাল, তবে আমি যুক্তি দিয়ে বলব যে মিমের ম্যাপিংটি এক্সএমএল-তে ডাটাবেসে রেখে দেওয়াও ভাল, কারণ বস্তুর যত্ন নেওয়া উচিত নয় যেখানে এর তথ্যটি এসেছে care এটি কেবল তার তথ্যের সাথে কী করতে পারে তা যত্নশীল হওয়া উচিত। তবে আপনি যদি জেপিএ পছন্দ করেন (আমার সাথে এটির কোনও মেয়াদ নেই), যাইহোক, এর জন্য যান।

সাধারণভাবে: যদি কোনও টীকাগুলি কার্যকারিতা সরবরাহ করে এবং নিজের মধ্যে এবং একটি মন্তব্য হিসাবে কাজ করে এবং এই টীকাটি ছাড়াই সাধারণত কাজ করার জন্য কোডটি কোনও নির্দিষ্ট প্রক্রিয়াটির সাথে বেঁধে রাখে না, তবে টীকাগুলিতে যান। উদাহরণস্বরূপ, লেনদেন হিসাবে চিহ্নিত হিসাবে চিহ্নিত একটি লেনদেনের পদ্ধতিটি তার অপারেটিং লজিককে হত্যা করে না, এবং পাশাপাশি একটি ভাল কোড-স্তরের মন্তব্য হিসাবে কাজ করে। অন্যথায়, এই তথ্যটি সম্ভবত এক্সএমএল হিসাবে সর্বোত্তমভাবে প্রকাশ করা হয়েছে, কারণ কোডটি কীভাবে এটি পরিচালনা করে তা শেষ পর্যন্ত এটি প্রভাবিত করবে, কোডের মূল কার্যকারিতা পরিবর্তন করবে না এবং তাই উত্স ফাইলগুলির মধ্যে নেই।


মহান উত্তরের জন্য ধন্যবাদ! কোনটি ব্যবহার করবেন তা সিদ্ধান্ত নিতে আমার কিছুটা সমস্যা হচ্ছে। এই এই উত্তরটি বলে যে তারা ডিকপলিংয়ের প্রচার করে যখন এই ব্লগ পোস্টটি বলছে তারা দৃ tight় সংযোগের প্রচার করে! আপনার উত্তরটি আমার জন্য সমস্যাটি সত্যই স্পষ্ট করেছে।
মিকায়লা মাকি

5
আমি এই পরামর্শটি সংক্ষেপে বলব: এওপি-র জন্য টীকাগুলি ব্যবহার করুন (উদাহরণস্বরূপ লেনদেনকে একটি দিক হিসাবে বিবেচনা করা যেতে পারে), তবে নির্ভরতা ইনজেকশনের জন্য এটি ব্যবহার করবেন না।
বেকার

1
এই উত্তরটি কি আজকাল স্থায়ী (2015)?
sp00m

1
বেশিরভাগ ক্ষেত্রে, বেশিরভাগ লোকের কাছে মনে হয় যে টীকাটি বেশি পছন্দ
জুনচেন লিউ

31

এখানে একটি বিস্তৃত সমস্যা রয়েছে, বহির্মুখী বনাম অন্তর্নিহিত মেটা-ডেটা। যদি আপনার অবজেক্টের মডেলটি কেবলমাত্র কোনও উপায়ে স্থির থাকে, তবে ইনলাইনড মেটা-ডেটা (অর্থাত্ টিকা) আরও কমপ্যাক্ট এবং পঠনযোগ্য।

তবে, যদি আপনার অবজেক্ট মডেলটি বিভিন্ন অ্যাপ্লিকেশনগুলিতে এমনভাবে পুনরায় ব্যবহার করা হয় যাতে প্রতিটি অ্যাপ্লিকেশন বিভিন্নভাবে মডেলটি ধরে রাখতে চায়, তবে মেটা-ডেটা (অর্থাত্ এক্সএমএল বর্ণনাকারী) বহিরাগত করা আরও উপযুক্ত হয়ে ওঠে।

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


13

আমি সবসময় কোনও শ্রেণি কীভাবে সক্ষম, বা এটি অন্যের সাথে কীভাবে যোগাযোগ করে তার কোনও সূচক হিসাবে টীকাগুলি সম্পর্কে ভাবি ।

অন্যদিকে আমার কাছে স্প্রিং এক্সএমএল কনফিগারেশন কেবল কনফিগারেশন

উদাহরণস্বরূপ, প্রক্সি আইপি এবং পোর্ট সম্পর্কে তথ্য অবশ্যই একটি এক্সএমএল ফাইলের মধ্যে চলেছে, এটি রানটাইম কনফিগারেশন।

ব্যবহার @Autowire, @Elementফ্রেমওয়ার্ক কি বর্গ সঙ্গে কাজ করতে নির্দেশ করার জন্য টীকা ভাল ব্যবহার করা হয়।

টীকাতে URL টি দেওয়া @Webserviceখারাপ স্টাইল।

তবে এটি কেবল আমার মতামত। মিথস্ক্রিয়া এবং কনফিগারেশন মধ্যে লাইন সর্বদা পরিষ্কার হয় না।


টীকা এবং এনটেশন ভিত্তিক কনফিগারেশন (জাভা কনফিগারেশন) দুটি আলাদা জিনিস এবং ওপি আপনাকে পূর্বের বিষয়ে কথা বলার পরে পরে সম্পর্কে জিজ্ঞাসা করে।
ভাগ্যবান

6

আমি এখন কয়েক বছর ধরে বসন্তটি ব্যবহার করছি এবং যে পরিমাণ এক্সএমএল প্রয়োজন হয়েছিল তা অবশ্যই ক্লান্তিকর হয়ে উঠছিল। নতুন এক্সএমএল স্কিমা এবং স্প্রিং ২.৫ এ টীকা সহকারীর মধ্যে আমি সাধারণত এই জিনিসগুলি করি:

  1. @ রিপোসিটোরি, @ সার্ভিস বা @ কম্পোনেন্ট ব্যবহার করে এমন অটোলোড ক্লাসগুলিতে "উপাদান-স্ক্যান" ব্যবহার করা। আমি সাধারণত প্রতিটি শিমকে একটি নাম দিই এবং তারপরে @ রিসোর্স ব্যবহার করে এগুলি একসাথে তারের করি। আমি দেখতে পেয়েছি যে এই নদীর গভীরতানির্ণয়টি প্রায়শই পরিবর্তিত হয় না তাই টীকাগুলি বোঝায়।

  2. সমস্ত এওপি-র জন্য "আওপ" নেমস্পেস ব্যবহার করা। এটি সত্যিই দুর্দান্ত কাজ করে। আমি এখনও এটি লেনদেনের জন্যও ব্যবহার করি কারণ @ ট্রানজেকশনালটি সমস্ত জায়গায় রেখে দেওয়া এক ধরণের টান। আপনি যে কোনও পরিষেবা বা সংগ্রহস্থলের পদ্ধতির জন্য নামকরণকৃত পয়েন্টকটগুলি তৈরি করতে পারেন এবং খুব দ্রুত পরামর্শটি প্রয়োগ করতে পারেন।

  3. হাইবারনেট কনফিগার করতে আমি হাইবারনেটজেপাভেন্ডারএডাপ্টারের সাথে লোকালকন্টেইনারএন্টিটি ম্যানেজারফ্যাক্টরিবিয়ান ব্যবহার করি। এটি হাইবারনেটকে ক্লাসপথে সহজেই @ এন্টিটি ক্লাসগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার করতে দেয়। তারপরে আমি এলসিইএমএফবি উল্লেখ করে "ফ্যাক্টরি-বিন" এবং "ফ্যাক্টরি-পদ্ধতি" ব্যবহার করে একটি নামকৃত সেশনফ্যাক্টরি বিন তৈরি করি।


5

কেবলমাত্র একটি টীকা-রচনার পদ্ধতির ব্যবহারের ক্ষেত্রে একটি গুরুত্বপূর্ণ অংশটি হ'ল "শিমের নাম" ধারণাটি কম-বেশি দূরে চলে যায় (তুচ্ছ হয়ে যায়)।

বসন্তের "শিমের নামগুলি" বাস্তবায়নকারী ক্লাসগুলিতে বিস্তৃতকরণের একটি অতিরিক্ত স্তর তৈরি করে। এক্সএমএল শিমের সাথে তাদের শিমের নামের সাথে সম্পর্কিত এবং সংজ্ঞাযুক্ত। টীকা সহ তারা তাদের শ্রেণি / ইন্টারফেস দ্বারা রেফারেন্স করা হয়। (যদিও শিমের নামটি বিদ্যমান, আপনার এটি জানার দরকার নেই)

আমি দৃ strongly়ভাবে বিশ্বাস করি যে অতিরিক্ত অতিরিক্ত বিমূর্ততা থেকে মুক্তি পাওয়ার ব্যবস্থা সহজতর করে এবং উত্পাদনশীলতা উন্নত করে। জন্য বৃহৎ প্রকল্প আমার মনে হয় দ্বারা এক্সএমএল পরিত্রাণ লাভ সারগর্ভ হতে পারে।


5

আমি মনে করি এক্সএমএল ভিত্তিক পদ্ধতির সাথে দৃশ্যমানতা একটি বড় জয়। এক্সএমএল ডকুমেন্টগুলি নেভিগেট করার জন্য বিভিন্ন সরঞ্জাম দেওয়া (যেমন ভিজ্যুয়াল স্টুডিও + রিশার্পারের ফাইল স্ট্রাকচার উইন্ডো) দেওয়ার জন্য এক্সএমএলটি আসলে খুব খারাপ নয়।

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

আমি জানি না; শেষ পর্যন্ত এক্সএমএল হেল আমার পক্ষে এত খারাপ লাগে না।


4

এটি আপনি যা যা কনফিগার করতে চান তার উপর নির্ভর করে, কারণ কিছু বিকল্প রয়েছে যা এন্টেশনগুলি দিয়ে কনফিগার করা যায় না। যদি আমরা এটিকে টীকাগুলির দিক থেকে দেখি:

  • প্লাস: টীকাগুলি কম কথাবার্তা
  • বিয়োগ: টীকাগুলি কম দেখা যায়

এটি আরও গুরুত্বপূর্ণ যেটি আরও গুরুত্বপূর্ণ ...

সাধারণভাবে আমি একটি উপায় বেছে নেওয়ার এবং পণ্যের কয়েকটি বন্ধ অংশ জুড়ে এটি ব্যবহার করার পরামর্শ দেব ...

(কিছু ব্যতিক্রম সহ: যেমন আপনি যদি এক্সএমএল ভিত্তিক কনফিগারেশন চয়ন করেন তবে @ অটোয়ার টীকাটি ব্যবহার করা ঠিক আছে It's এটি মিশ্রণযুক্ত, তবে এটি পাঠযোগ্যতা এবং রক্ষণাবেক্ষণ উভয় ক্ষেত্রেই সহায়তা করে)


4

রিফ্যাক্টরিং এবং অন্যান্য কোড পরিবর্তনগুলির মতো তুলনা করার অন্যান্য দিক রয়েছে। এক্সএমএল ব্যবহার করার সময় রিফ্যাক্টরিং তৈরি করতে মারাত্মক প্রচেষ্টা দরকার কারণ আপনাকে সমস্ত এক্সএমএল বিষয়বস্তুর যত্ন নিতে হবে। টিকা ব্যবহার করার সময় এটি সহজ But

আমার পছন্দের উপায়টি জাভা ভিত্তিক কনফিগারেশনটি (বা সর্বনিম্ন) টিকা ছাড়াই। http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-java


3

আমি ভুল হতে পারি, তবে আমি ভেবেছিলাম টীকাগুলি (জাভা এর @ ট্যাগ এবং সি # এর [অ্যাট্রিবিউট]) একটি সংকলন-সময় বিকল্প ছিল এবং এক্সএমএল একটি রান-টাইম বিকল্প ছিল। এটি আমার কাছে বলছে যে এটি সমতুল্য নয় এবং এর বিভিন্ন উপকারিতা এবং কনস রয়েছে।


টীকাগুলি একটি সংকলন সময় বিষয় হ'ল এন্টোটেশন ভিত্তিক কনফিগারেশনের প্রো, তবে টীকাগুলি এবং এক্সএমএল উভয়ই কনফিগারেশনের পদ্ধতি এবং এই প্রসঙ্গে তারা একই জিনিস অর্জন করে। যেমন। ক্লাসে টীকাগুলি ব্যবহারের বিপরীতে একটি এক্সএমএল ফাইলে হাইবারনেট ম্যাপিংগুলি কনফিগার করা।
abarax

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

3

আমি আরও মনে করি যে একটি মিশ্রণ সেরা জিনিস, তবে এটি কনফিগারেশন পরামিতিগুলির ধরণের উপরও নির্ভর করে। আমি একটি সীম প্রকল্পে কাজ করছি যা স্প্রিং ব্যবহার করে এবং আমি সাধারণত এটি বিভিন্ন বিকাশ এবং পরীক্ষার সার্ভারগুলিতে স্থাপন করি। সুতরাং আমি বিভক্ত হয়েছে:

  • সার্ভার নির্দিষ্ট কনফিগারেশন (সার্ভারে সংস্থানসমূহের নিখুঁত পাথের মতো): স্প্রিং এক্সএমএল ফাইল
  • মটরশুটিকে অন্য শিমের সদস্য হিসাবে ইনজেকশন দেওয়া (বা অনেকগুলি শিমের মধ্যে একটি স্প্রিং এক্সএমএল সংজ্ঞায়িত মান পুনরায় ব্যবহার করা): টিকা

মূল পার্থক্যটি হ'ল আপনাকে সমস্ত পরিবর্তিত সার্ভার-নির্দিষ্ট কনফিগারেশনের জন্য কোডটি পুনরায় সংকলন করতে হবে না, কেবল এক্সএমএল ফাইল সম্পাদনা করুন। এই সুবিধাটিও রয়েছে যে টিম সদস্যরা কিছু যুক্তিযুক্ত পরিবর্তনগুলি করতে পারেন যারা জড়িত সমস্ত কোড বোঝেন না।


2

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

যদি এটি কেবল ইউনিট-পরীক্ষার স্বার্থে হয় তবে বিকাশকারীদের তাদের কোডিংয়ে নির্ভরতা ইনজেকশন প্যাটার্ন প্রয়োগ করতে হবে এবং নির্ভরতা কাটাতে ইজিমক বা জেমকের মতো উপহাসের সরঞ্জামগুলি থেকে সুবিধা গ্রহণ করা উচিত।

আপনার ভুল প্রসঙ্গে ডিআই কনটেইনার ব্যবহার এড়াতে চেষ্টা করা উচিত।


2

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

নিম্নলিখিত লিঙ্কগুলি উল্লেখ করুন। তারা খুব দরকারী হতে পারে।

  1. এক্সএমএল বনাম টিকা, সুবিধা এবং অসুবিধা
  2. http://www.ibm.com/developerworks/library/j-cwt08025/

1

এটি ক্লাসিক 'কনফিগারেশন বনাম কনভেনশন' প্রশ্ন। ব্যক্তিগত স্বাদ বেশিরভাগ ক্ষেত্রেই উত্তরটি নির্দেশ করে। তবে ব্যক্তিগতভাবে আমি কনভেনশনের চেয়ে কনফিগারেশনকে (যেমন এক্সএমএল ভিত্তিক) পছন্দ করি। আইএমও আইডিইগুলি বেশিরভাগ এক্সএমএল হেল্পকে কাটিয়ে উঠতে যথেষ্ট শক্তিশালী যারা প্রায়শই ডব্লিউ / বিল্ডিংয়ের সাথে যুক্ত হয় এবং এক্সএমএল ভিত্তিক পদ্ধতির রক্ষণাবেক্ষণ করে। শেষ পর্যন্ত, আমি কনফিগারেশনের সুবিধাগুলি খুঁজে পাই (যেমন এক্সএমএল কনফিগার ফাইলটি তৈরি, রক্ষণাবেক্ষণ এবং স্থাপনার জন্য বিল্ডিং ইউটিলিটিস) দীর্ঘমেয়াদে কনভেনশনকে ছাড়িয়ে যায়।


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

1

আমি উভয় ব্যবহার। বেশিরভাগই এক্সএমএল, তবে যখন আমার কাছে একগুচ্ছ মটরশুটি থাকে যা একটি সাধারণ শ্রেণি থেকে উত্তরাধিকারী হয় এবং সাধারণ সম্পত্তি থাকে, তখন আমি সুপারক্লাসে তাদের জন্য টীকা ব্যবহার করি, তাই আমাকে প্রতিটি শিমের জন্য একই বৈশিষ্ট্যগুলি সেট করতে হবে না। যেহেতু আমি কিছুটা কন্ট্রোল ফ্রিক, তাই আমি কেবলমাত্র স্বয়ংসম্পাদনের স্টাফের পরিবর্তে @ রিসোর্স (নাম = "রেফারবিয়ান") ব্যবহার করি (এবং যদি আমাকে একই শ্রেণীর আর একটি বিন প্রয়োজন হয় তবে মূল রেফারিন হিসাবে একই শ্রেণীর আর একটি সিম প্রয়োজন হয়) ।


1

আমার অভিজ্ঞতা থেকে টীকাগুলির কনফিগারেশনের কিছু উপকারিতা এবং কনস রয়েছে:

  • এটি যখন জেপিএ কনফিগারেশনের ক্ষেত্রে আসে তখন এটি একবার হয়ে যায় এবং সাধারণত বেশিরভাগ সময় পরিবর্তন হয় না তবে আমি টীকা কনফিগারেশনে আটকে থাকতে পছন্দ করি। কনফিগারেশনের আরও বড় ছবি দেখার সম্ভাবনা সম্পর্কিত কোনও উদ্বেগ থাকতে পারে - এই ক্ষেত্রে আমি এমএসকিউএলওয়র্কবার্চ ডায়াগ্রামগুলি ব্যবহার করি।
  • এক্সএমএল কনফিগারেশন অ্যাপ্লিকেশনটির একটি বৃহত্তর ছবি পেতে খুব ভাল তবে রানটাইম পর্যন্ত কিছু ত্রুটি খুঁজে পাওয়া জটিল হতে পারে। এই ক্ষেত্রে স্প্রিং @ কনফিগারেশন টীকাটি আরও ভাল পছন্দ হিসাবে শোনা যাচ্ছে কারণ এটি আপনাকে আরও একটি বড় ছবি দেখতে দেয় এবং সংকলনের সময় কনফিগারেশনকে বৈধতা দেয়।
  • আমি একত্রিত করতে পছন্দ স্প্রিং কনফিগারেশন হিসাবে উভয় পন্থা: ব্যবহার @Configuration সার্ভিসেস অ্যান্ড ক্যোয়ারী ইন্টারফেস এবং XML কনফিগারেশন ডেটাউত্স জন্য এবং বসন্ত কনফিগারেশন কাপড় প্রসঙ্গ মতো টীকা: কম্পোনেন্ট-স্ক্যান বেস-প্যাকেজ = "..."
  • প্রবাহের কনফিগারেশন (স্প্রিং ওয়েব ফ্লো বা লেক্সাডেন ওয়েব ফ্লো) এর ক্ষেত্রে এক্সএমএল কনফিগারেশন বিভাজন বিভাজন বিট দেয় কারণ পুরো ব্যবসায়িক প্রক্রিয়াটির একটি বৃহত্তর চিত্র দেখতে এটি অত্যন্ত গুরুত্বপূর্ণ। এবং এটি টীকা সংক্রান্ত পদ্ধতির সাথে এটি প্রয়োগ করা জটিল বলে মনে হচ্ছে।

আমি উভয় পদ্ধতির সমন্বয় করতে পছন্দ করি - জাভা টিকা এবং প্রয়োজনীয় এক্সএমএল ন্যূনতম যা কনফিগারেশন নরকে হ্রাস করে।


1

স্প্রিং ফ্রেমওয়ার্কের জন্য আমি @ কম্পোনেন্ট টীকাটি ব্যবহার করতে সক্ষম হতে এবং "উপাদান-স্ক্যান" বিকল্পটি সেট করার ধারণাটি পছন্দ করি যাতে বসন্তটি আমার জাভা বিনগুলি খুঁজে পেতে পারে যাতে আমাকে আমার সমস্ত মটরশুটি এক্সএমএলে সংজ্ঞায়িত করতে না হয় এবং না JavaConfig। উদাহরণস্বরূপ, স্টেটলেস সিঙ্গলটন জাভা মটরশুটিগুলির জন্য যেগুলি কেবল অন্য শ্রেণিতে চালিত হওয়া প্রয়োজন (আদর্শভাবে একটি ইন্টারফেসের মাধ্যমে) এই পদ্ধতিটি খুব ভালভাবে কাজ করে। সাধারণভাবে, বসন্ত মটরশুটির জন্য আমি বেশিরভাগ অংশে সিমের সংজ্ঞা দেওয়ার জন্য স্প্রিং এক্সএমএল ডিএসএল থেকে সরে এসেছি এবং এখন জাভা কনফিগ এবং স্প্রিং টীকাগুলির ব্যবহারের পক্ষে আছি কারণ আপনি আপনার কনফিগারেশনটি পরীক্ষা করার জন্য কিছু সংকলন সময় এবং কিছুটা রিফ্যাক্টরিং সমর্থন পান যে আপনি ' টি স্প্রিং এক্সএমএল কনফিগারেশন পেতে না। আমি দুটোকে এমন কিছু বিরল ক্ষেত্রে মিশ্রিত করি যেখানে আমি দেখতে পেয়েছি যে জাভা কনফিগ / টীকাগুলি এক্সএমএল কনফিগারেশন ব্যবহার করে যা পাওয়া যায় তা করতে পারে না।

হাইবারনেট ওআরএমের জন্য (এখনও জেপিএ ব্যবহার করেনি) আমি এখনও এক্সএমএল ম্যাপিং ফাইলগুলিকে পছন্দ করি কারণ ডোমেন মডেল ক্লাসে টীকাগুলি কিছু ডিগ্রি ক্লিন আর্কিটেকচারের লঙ্ঘন করে যা আমি গত কয়েক বছর ধরে গৃহীত একটি স্থাপত্য শৈলী। লঙ্ঘন ঘটে কারণ এর জন্য হায়ারনেট বা জেপিএ লাইব্রেরির মতো দৃistence়তা সম্পর্কিত বিষয়গুলির উপর নির্ভর করতে কোর লেয়ারের প্রয়োজন হয় এবং এটি ডোমেন মডেল POJOs কে কিছুটা কম অধ্যবসায় অজ্ঞ করে তোলে। আসলে কোর লেয়ারটি অন্য কোনও অবকাঠামোর উপর নির্ভর করার কথা নয়।

তবে, ক্লিন আর্কিটেকচারটি যদি আপনার "কাপের কাপ" না হয় তবে আমি দেখতে পাচ্ছি যে পৃথক এক্সএমএল ম্যাপিং ফাইলের চেয়ে ডোমেন মডেল শ্রেণিতে হাইবারনেট / জেপিএ টীকা ব্যবহারের অবশ্যই সুবিধা (যেমন সুবিধা এবং রক্ষণাবেক্ষণ) রয়েছে।

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