উত্তরগুলির মধ্যে অনেকগুলি ইতিমধ্যে জানিয়েছে যে এই টীকাগুলি কী জন্য ব্যবহৃত হয়, আমরা এখানে তাদের মধ্যে কিছু ছোটখাটো পার্থক্য ফোকাস করব।
প্রথম মিল
আবার হাইলাইট করার প্রথম বিষয়টি হ'ল স্ক্যান-অটো-সনাক্তকরণ এবং বিয়ান ডেফিনিশনটির জন্য নির্ভরতা ইনজেকশন সম্পর্কিত এই সমস্ত টিকা (যেমন।, @ কম্পোনেন্ট, @ সার্ভিস, @ রিপোজিটরি, @ কনট্রোলার) একই। আমরা অন্যটির জায়গায় একটি ব্যবহার করতে পারি এবং এখনও আমাদের কাছাকাছি যেতে পারি।
@ কম্পোনেন্ট, @ রিপোসিটোরি, @ কনট্রোলার এবং @ সার্ভিসের মধ্যে পার্থক্য
@উপাদান
এটি একটি সাধারণ-উদ্দেশ্যগত স্টেরিওটাইপ টীকা যা ইঙ্গিত করে যে ক্লাসটি একটি বসন্ত উপাদান।
বিশেষ কি @Component সম্পর্কে
<context:component-scan>
শুধুমাত্র স্ক্যান@Component
এবং জন্য দেখাচ্ছে না@Controller
,@Service
এবং@Repository
সাধারণভাবে। এগুলি স্ক্যান করা হয় কারণ তারা নিজেরাই টিকা থাকে@Component
।
শুধু কটাক্ষপাত করা @Controller
, @Service
এবং @Repository
টীকা সজ্ঞা:
@Component
public @interface Service {
….
}
@Component
public @interface Repository {
….
}
@Component
public @interface Controller {
…
}
সুতরাং, এটা যে বলা ভুল নয় @Controller
, @Service
এবং @Repository
বিশেষ ধরনের হয় @Component
টীকা। <context:component-scan>
তাদের তুলে এবং তাদের নীচের ক্লাসগুলি মটরশুটি হিসাবে নিবন্ধভুক্ত করে, যেমন তাদের সাথে টিকা দেওয়া হয়েছিল @Component
।
বিশেষ ধরণের টীকাগুলিও স্ক্যান করা হয়, কারণ এগুলি নিজেরাই টিকা দিয়ে @Component
টানা থাকে, যার অর্থ তারাও @Component
s যদি আমরা আমাদের নিজস্ব কাস্টম টীকাগুলি সংজ্ঞায়িত করি এবং এটির সাথে এ্যানোটেট @Component
করি তবে এটিও স্ক্যান হয়ে যাবে<context:component-scan>
@Repository
এটি নির্দেশ করে যে ক্লাস একটি ডেটা সংগ্রহস্থল সংজ্ঞায়িত করে।
@ রিপোসিটরি সম্পর্কে বিশেষ কি?
এটি উল্লেখ করার পাশাপাশি, যে এটি একটি টিকা ভিত্তিক কনফিগারেশন , @Repository
এর কাজ হ'ল প্ল্যাটফর্মের নির্দিষ্ট ব্যতিক্রমগুলি ধরা এবং তাদেরকে স্প্রিংয়ের একীভূত চেক করা ব্যতিক্রম হিসাবে পুনরায় নিক্ষেপ করা। এর জন্য, আমাদের সরবরাহ করা হয়েছে PersistenceExceptionTranslationPostProcessor
, যা আমাদের বসন্তের প্রয়োগ প্রসঙ্গে যুক্ত করতে হবে:
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
এই শিম পোস্ট প্রসেসরটি এমন কোনও শিমের সাথে একটি পরামর্শক যুক্ত করে @Repository
যাতে কোনও প্ল্যাটফর্ম-নির্দিষ্ট ব্যতিক্রম ধরা পড়ে এবং তারপরে স্প্রিংয়ের চেক করা ডেটা অ্যাক্সেস ব্যতিক্রমগুলির একটি হিসাবে পুনরায় ছুঁড়ে ফেলা হয়।
@Controller
@Controller
টীকা ইঙ্গিত করে যে একটি বিশেষ শ্রেনীর একটি নিয়ামক ভূমিকা স্থল। @Controller
টীকা, সটীক ক্লাসের জন্য একটি বাঁধাধরা হিসাবে কাজ করে তার ভূমিকা নির্দেশ করে।
@ নিয়ন্ত্রণকারী সম্পর্কে বিশেষ কি?
আমরা এই টীকাটি অন্যর মতো @Service
বা অন্যগুলির মতো দেখতে স্যুইচ করতে পারি না @Repository
যদিও সেগুলি দেখতে একই রকম। প্রেরণকারী দ্বারা টীকাযুক্ত ক্লাসগুলি স্ক্যান করে @Controller
এবং @RequestMapping
সেগুলির মধ্যে টীকাগুলির সাথে টীকাযুক্ত পদ্ধতিগুলি সনাক্ত করে। আমরা ব্যবহার করতে পারি @RequestMapping
কেবলমাত্র সেই পদ্ধতি যার শ্রেণীর সঙ্গে সটীক হয় চালু / @Controller
এবং এটি হবে না সঙ্গে কাজ @Component
, @Service
, @Repository
ইত্যাদি ...
নোট: একটি বর্গ ইতিমধ্যে মাধ্যমে মতো কোনো বিকল্প পদ্ধতি মাধ্যমে একটি শিম হিসাবে নিবন্ধিত করা হয়, তাহলে @Bean
বা এর মাধ্যমে @Component
, @Service
ইত্যাদি ... টীকা, তারপর @RequestMapping
যদি বর্গ সাথে সটীক হয় বাছাই করা যেতে পারে @RequestMapping
টীকা। তবে এটি একটি ভিন্ন দৃশ্য।
@Service
@Service
মটরশুটি ব্যবসায়িক যুক্তি এবং কল পদ্ধতিতে সংগ্রহস্থল স্তরে ধারণ করে।
@ সার্ভিস সম্পর্কে বিশেষ কি?
এটি ব্যবসায়ের যুক্তি ধারণ করে, এটি উল্লেখ করার জন্য এটি ব্যবহার করা হয়েছে তা বাদে এই টীকাতে অন্য কিছুই লক্ষণীয় নয়; তবে কে জানে, বসন্ত ভবিষ্যতে কিছু অতিরিক্ত ব্যতিক্রম যুক্ত করতে পারে।
আর কি?
উপরে অনুরূপ, ভবিষ্যতে স্প্রিং জন্য বিশেষ বৈশিষ্ট্য যোগ করতে পারেন @Service
, @Controller
এবং @Repository
তাদের layering নিয়মাবলী উপর ভিত্তি করে। সুতরাং, কনভেনশনকে সম্মান করা এবং স্তরগুলির সাথে মিল রেখে এটি ব্যবহার করা সর্বদা একটি ভাল ধারণা।