Javax.inject কি? নামযুক্ত টীকাটি ব্যবহার করার কথা?


114

আমি javax.injectপ্যাকেজটি বোঝার চেষ্টা করছি এবং javax.inject.Namedটীকাটি কী ব্যবহার করা হবে তা আমি পরিষ্কার করতে পারছি না । জাভাদোক এর পেছনের ধারণাটি ব্যাখ্যা করে না।

জাভাদোকটি http://download.oracle.com/javaee/6/api/javax/inject/Named.html এ রয়েছে

আমি কিছু নমুনা প্রোগ্রাম লেখার জন্য স্প্রিং 3.0 ব্যবহার করছি , @Namedএকটি শিম লাগিয়ে মনে হচ্ছে এটি শিমের কারখানায় যুক্ত হবে তবে জাভাদোকের বিবরণ এতই হালকা আমি বলতে পারছি না যে এটি স্ট্যান্ডার্ড আচরণ বা স্প্রিংয়ের নির্দিষ্ট আচরণ।

আমার প্রশ্নগুলি হ'ল:

  1. @Namedএবং মধ্যে পার্থক্য কি@Qualifier
  2. রানটাইম সিস্টেমকে কীভাবে বলার কথা যে কোনও ক্লাস অন্য ক্লাসে ইনজেকশনযোগ্য হওয়া উচিত তার জন্য টীকাটি কী? @Componentবসন্তের সমতুল্য ?

আপডেট 1 এর সম্পর্কে এবং https://dzone.com/articles/java-ee6-cdi- নাম-components সম্পর্কে নিস সম্পর্কে নিখরচায় একটি চমৎকার ব্যাখ্যা রয়েছে @Namedএবং এর সাথে নীচের মন্তব্যে লিঙ্ক দেওয়ার জন্য ধন্যবাদ @ xmedeko।@Qualifier@Named@Qualifier


জেএসআর -330 এর কনফিগারেশনটি স্পেকের বাইরে, অর্থাৎ ধারক নির্দিষ্ট।
থোরবজর্ন রাভন অ্যান্ডারসন

1
স্প্রিং ডক্স অনুসারে "জেএসআর 330 এর @ নামযুক্ত টীকাগুলি উভয় উপাদান সনাক্ত করতে এবং তাদের একটি নাম সরবরাহ করার জন্য একটি উপায় হিসাবে ব্যবহার করা যেতে পারে class ক্লাসপাথে আপনার কাছে জেএসআর 330 জেআর থাকলে এই আচরণটি স্বয়ংক্রিয়ভাবে সক্ষম হয়" " এই আচরণটি কি বসন্তের বা সমস্ত নাম ধারক যারা @ নাম বোঝে তাদের কাছে অনন্য?
এমএস

উত্তর:


87

ব্যবহার করুন @Namedথেকে পার্থক্য একই ধরনের একই সুযোগ আবদ্ধ বিভিন্ন বস্তুর মধ্যে।

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

@Namedকোয়ালিফায়ার ব্যতীত ইঞ্জেক্টর জানেন না কোন ভেরিয়েবলের সাথে কোনটি আবদ্ধ করা উচিত।

  • আপনি যদি এমন টিকা তৈরি করতে চান যা এর মতো কাজ করে @Namedতবে @Qualifierএনেটেশন তৈরি করার সময় এটি ব্যবহার করুন।

  • যদি আপনি তাকান @Named, এটি নিজেই সাথে টিকা দেওয়া হয় @Qualifier


সুতরাং @ নামকটি হ'ল @ কোয়ালিফায়ার, সুতরাং @ কোয়ালিফায়ারটি এত জেনেরিক হওয়ার প্রয়োজন কেন, জাভ্যাক্স.ইনজিেক্ট ব্যবহার করে এমন কাউকে @ কোষী, @ পরিষেবা, @ কন্ট্রোলারের মতো স্টেরিওটাইপগুলি সংজ্ঞায়িত করার অনুমতি দেওয়ার ধারণাটি কি?
এমএস

স্টিরিওটাইপগুলি সম্পর্কে আপনি কী বোঝেন তা আমি নিশ্চিত নই। আপনি যদি একই ধরণের বিভিন্ন উদাহরণের মধ্যে পার্থক্য করতে নতুন টীকাগুলি যুক্ত করতে চান তবে হ্যাঁ।
শে

উদাহরণস্বরূপ @ নেমেড ("ম্যাক্সওয়েটটাইম") এর পরিবর্তে আপনার কাছে @ ম্যাক্সওয়েটটাইম থাকতে পারে। এটা একটু ক্লিনার।
সোর্সডেলিকা

28
সম্পর্কে চমৎকার নিবন্ধ @Namedএবং @Qualifier java.dzone.com/articles/java-ee6-cdi-named-components
xmedeko

আমি বুঝতে পারছি না ... আপনি তাদের বিভিন্ন পরিবর্তনশীল নাম দিয়ে পার্থক্য বলতে পারবেন না?
কোডিবাগস্টাইন

64

@Injectপরিবর্তে স্প্রিং এর @Autowiredএকটি শিম ইনজেকশনের জন্য।
@Namedপরিবর্তে স্প্রিং এর @Componentশিম ঘোষণা করতে।

সেই জেএসআর -330 স্ট্যান্ডার্ড টীকাগুলি স্প্রিং টীকাগুলির মতো স্ক্যান করে পুনরুদ্ধার করা হয় (যতক্ষণ jarনা নীচে আপনার ক্লাসপথে থাকে)


"একটি শিম ইনজেকশান" শব্দবন্ধটি অস্পষ্ট; আপনি কি "শিমের সমস্ত নির্ভরতা সন্তুষ্ট" বলতে চান বা আপনি "সেই শিমকে এমন কিছুতে ইনজেকশান হিসাবে অন্তর্ভুক্ত করেছেন" যার অর্থ নির্ভরতা হিসাবে রয়েছে?
অ্যান্ড্রু সোয়ান

স্প্রিং টীকাগুলির জন্য আমি জেএসআর সহযোগীদের তালিকা কোথায় পেতে পারি?
পবন

একটি শিম ইনজেকশন করুন - "সেই শিমকে এমন কিছুতে ইনজেক্ট করুন যা এটির নির্ভরতা হিসাবে রয়েছে"
নাদভ ফিনিশ

আমি দুঃখিত, পবন, আমি জেএসআর তালিকার সাথে পরিচিত নই যা বসন্তের
টীকাতে অংশীদার

8

# 2 সম্পর্কিত, জেএসআর -330 অনুসারে:

এই প্যাকেজটি নির্ভরতা ইনজেকশন টীকা সরবরাহ করে যা পোর্টেবল ক্লাস সক্ষম করে, তবে এটি ইঞ্জেক্টর বাস্তবায়নের বাইরে বহিরাগত নির্ভরতা কনফিগারেশন ছেড়ে দেয়।

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


5

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

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