বসন্ত - কনফিগারেশন নিয়ে বিভ্রান্তি?


9

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

আমি চাইছি যে কেউ এক্সএমএল এবং টীকাগুলি ব্যবহারের ক্ষেত্রে একটি নিশ্চিত আগুন পদ্ধতি বা থাম্বের নিয়মের পরামর্শ দিন suggest


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

  • লিংক -1

    আমি কার্যকারিতা পিছনে উপলব্ধি বলে মনে হচ্ছে না <context:annotation-config>এবং <context:component-scan>

    আমি যা পড়েছি সেগুলি থেকে তারা বিভিন্ন টীকাগুলি (@ প্রয়োজনীয়, @ স্বীকৃত ইত্যাদি বনাম @ কমপোয়েন্টিটি, @ রিপোজিটরি, @ সার্ভিস ইত্যাদি) পরিচালনা করতে পারে বলে মনে হয় তবে যা আমি পড়েছি তা থেকে তারা একই শিম পোস্ট প্রসেসরের ক্লাস নিবন্ধন করে।

    আমাকে আরও বিভ্রান্ত করার জন্য, এখানে একটি annotation-configবৈশিষ্ট্য রয়েছে <context:component-scan>...

  • লিঙ্ক 2

    আমার কাছে এখনও উপাদান স্ক্যান ট্যাগ রয়েছে:

    <context:component-scan base-package="com.mycompany.maventestwebapp" />

    তবে আমার কাছে আরও একটি ট্যাগ রয়েছে (দেখতে দেখতে একইরকম টাস্ক রয়েছে), এটি:

    <annotation-driven />

    এই দুটি ট্যাগের মধ্যে পার্থক্য কী? অন্য একটি "আশ্চর্যের" বিষয়টি হ'ল পূর্ববর্তী উদাহরণটি (যে টীকাটি চালিত ট্যাগটি ব্যবহার করে না) স্প্রিং এমভিসি টেমপ্লেট প্রকল্পটি ব্যবহার করে এসটিএস দ্বারা নির্মিত প্রকল্পের সাথে খুব মিল তবে আমি যদি এর কনফিগারেশন থেকে টিকা-চালিত ট্যাগটি মুছি তবে প্রকল্পটি চালাবেন না এবং আমাকে নিম্নলিখিত ত্রুটিটি দিন: HTTP স্থিতি 404 - ...

স্প্রিং ৩.২ এর জন্য প্রক্সি করার জন্য আর সিগ্লিব লাগবে না, তবে নিম্ন সংস্করণগুলি সিজিবিব ব্যবহার করে। স্প্রিংসোর্স ব্লগের একটি উদ্ধৃতি

এই জাতীয় প্রক্সি তৈরি করতে, স্প্রিং cglib নামে একটি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করে। দুর্ভাগ্যক্রমে, এই প্রকল্পটি আর সক্রিয় নয়। স্প্রিংয়ে ৩.২-তে, সম্ভবত খুব সম্ভবত স্প্রিং জাভাসিস্টকে ডিফল্টরূপে ব্যবহার করবে।

কনফিগারেশন নিয়ে বসন্তটি বিভ্রান্তির পরামর্শ দেওয়ার জন্য এগুলি কি যথেষ্ট?


1
"বসন্তের লোকেরা কনফিগারেশনের উপর এত পরিবর্তন আনছে" - আপনি দয়া করে একটি উদাহরণ দিতে পারেন? যে সাহায্য করবে পাঠকদের ভাল আপনার সমস্যাটি বোঝার জন্য এবং আপনার প্রশ্নের উত্তর দিতে
মশা

9
প্রশ্নটি তেমন ভাল নয়, তবে শিরোনামটি অবশ্যই মজাদার।
ফ্লোরিয়ান মার্জাইন

1
@ বসন্তের নিজেকে শেখানোর প্রক্রিয়াটিতে অবিচ্ছিন্ন, আমি প্রায় গুগল করেছিলাম এবং একই জিনিসটি বিভিন্ন উপায়ে প্রকাশ করেছি। বসন্তের ডকুমেন্টেশন একটি কাজ করার এক উপায় বলে, কিছু টিউটোরিয়াল আরও একটি উপায় বলে, উভয়ই সঠিক, শেখার বক্ররেখা এত বেশি y আমার একটাই প্রশ্ন .. কোনও স্পষ্ট ডকুমেন্টেশন আছে যা কোনও কাজ করার সমস্ত সম্ভাব্য উপায় দেখায়? বসন্তে ?

1
@ প্রশ্নটিতে মন্তব্য হিসাবে আপনি এটি লেখার সাথে সাথে, "এখানে কোনও ডকুমেন্টেশন আছে", একটি উত্স অনুরোধ বলে মনে হচ্ছে। প্রোগ্রামারগুলিতে রিসোর্স অনুরোধগুলি যথেষ্ট স্বাগত নয় । যতদূর আমি বুঝতে পারি, তার পরিবর্তে কেউ এর পরিবর্তে অন্তর্নিহিত সমস্যাটি উপস্থাপন করবে (যতদূর আমি দেখতে পাচ্ছি, আপনি কেবল এটি "প্রশ্নে বিভ্রান্ত হওয়া" প্রশ্নের পাঠ্যেই করেছিলেন) - নির্দিষ্ট সমস্যাটির অনুরোধ করা একটি সমস্যা যা অনুরোধ করা হয়েছিল
gnat

2
@ টিটো আমি মনে করি আপনার সমস্যাটি পুরানো টিউটোরিয়ালগুলিকে নতুন ডকুমেন্টেশনের সাথে মিশিয়ে দিচ্ছে। বসন্তটি "কনফিগারেশন ওভার কনফিগারেশন" হয়ে উঠেছে, যেখানে আপনাকে আগের মতো প্রকাশ করার দরকার নেই। তবে, পুরানো টিউটোরিয়ালগুলি (বিশেষত প্রাক -৩.১) এখন প্রচুর স্টাফ অপ্রয়োজনীয় করে।
Matsemann

উত্তর:


5

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

স্প্রিং 2.5.x এবং পূর্ববর্তী সংস্করণগুলিতে, সাধারণ আইডিয়োম ছিল এক্সএমএল এর মাধ্যমে এই কনফিগারেশনটি সরবরাহ করা। স্প্রিং 3.0.০+ এর সাথে, মুশকিল উপায়টি টীকাগুলি ব্যবহার করা (এমন কিছু যা জাভা EE6 / 7 এছাড়াও উত্সাহ দেয়)।

পার্শ্ব নোট হিসাবে, কোনও মন্তব্যযুক্ত জেপিএ সত্তা দেখতে মজাদার (দুঃখজনক?) হতে পারে, একক ক্ষেত্রে 4+ টিকা যুক্ত করা আরও সহজ ....


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

1
আমি দশ টি টীকা সহ পদ্ধতি পেয়েছি যার মধ্যে প্রতিটি আলাদা উপকারী কাজ করে ...
ডোনাল ফেলো

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

2
4 টি বিরক্তি আপনাকে দু: খিত করে কেন আমি পাই না, সমমানের এক্সএমএল ফাইলটি দেখতে কেমন হবে?
নিমচিম্পস্কি

ওহ, এক্সএমএলটি আরও বেশি খারাপ হবে :-)
মার্টিজ ভার্বার্গ

0
<annotation-driven />

আপনাকে XML স্কিমা উল্লেখ করতে হবে যেখানে এটি এসেছে।

লেনদেন পরিচালককে সংজ্ঞায়িত করার সময় সম্ভবত এটি জেপিএ লেনদেন পরিচালনার কৌশল প্রসঙ্গে রয়েছে (দেখুন 9.5.6। স্প্রিংয়ের ডক্সে @ ট্রান্সজেকশনাল ব্যবহার করে )

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


0

আমি খুঁজে পেয়েছি যে আইওসি / বিনের ভিত্তিতে টিকাগুলি কার্যকর যখন আপনার একটি সিঙ্গলটন বাস্তবায়ন হয় তবে এটিকে স্যুপ আউট করার প্রয়োজন হতে পারে।

এমন একটি পরিস্থিতির বিপরীতে যেখানে আপনাকে বিভিন্ন নির্ভরশীল শ্রেণি / দৃষ্টান্তগুলির সাথে বার বার শিম পুনরায় ব্যবহার করতে হবে।

সে ক্ষেত্রে আমি বিনকে কনফিগার করে ঘোষণা করি এবং সাধারণত আমার যা প্রয়োজন নির্ভরতার কনস্ট্রাক্টর ইঞ্জেকশন করি। তারপরে, ক্লাসে সিম (গুলি) আমি @Autowireএবং তারপরে ব্যবহার করব @Qualifier("")- সেভাবে কারখানায় কাজ করার কথা মনে করা হয়।

একটি সিঙ্গলটন একটি কারখানা পদ্ধতি যা কেবল 1 ফলাফল দেয় returns যখন এটি হস্তান্তরিতভাবে প্রয়োগ হয় না তখন যখন আপনার এটি মিশ্রিত করা দরকার।

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

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

এখানে কোন ধর্ম নেই। শুধু অভিজ্ঞতা পাস


0

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

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