আমি জানতে আগ্রহী যে স্প্রিং ইনজেকশনটি @Bean
টীকা সহ কল করার পদ্ধতিগুলি কীভাবে পরিচালনা করে । যদি আমি @Bean
কোনও পদ্ধতিতে টীকাগুলি রেখেছি এবং একটি উদাহরণ ফিরে পাই তবে আমি বুঝতে পারি যে পদ্ধতিটি কল করে এবং ফিরে আসা উদাহরণটি পেয়ে সিম তৈরি করতে বসন্তকে বলে। যাইহোক, কখনও কখনও সেই শিমটি অন্য মটরশুটিগুলি তারের জন্য ব্যবহার করতে হয় বা অন্য কোড সেটআপ করতে হয়। এটি করার স্বাভাবিক @Bean
উপায়টি হ'ল উদাহরণ পাওয়ার জন্য টীকাগুলি কল করা । আমার প্রশ্ন হল, কেন এটি শিমের চারপাশে ভাসমান একাধিক ঘটনা ঘটায় না?
উদাহরণস্বরূপ, নীচের কোডটি দেখুন (অন্য প্রশ্ন থেকে নেওয়া)। entryPoint()
পদ্ধতি সঙ্গে সটীক হয় @Bean
, তাই আমি কল্পনা বসন্ত একটি নতুন দৃষ্টান্ত তৈরি করবে হবে BasicAuthenticationEntryPoint
একটি শিম হিসাবে। তারপরে, আমরা entryPoint()
আবার কনফিগার ব্লকে কল করি , তবে এটি entryPoint()
শিমের উদাহরণটি ফেরত দেওয়ার মতো বলে মনে হয় এবং একাধিকবার বলা হয় না (আমি লগিংয়ের চেষ্টা করেছি এবং কেবল একটি লগ এন্ট্রি পেয়েছি)। সম্ভাব্যভাবে আমরা entryPoint()
কনফিগারেশনের অন্যান্য অংশগুলিতে একাধিকবার কল করতে পারি এবং আমরা সর্বদা একই উদাহরণ পাই। আমার বোঝার বিষয়টি কি সঠিক? বসন্ত কি কিছু যাদুবিদ্যার সাথে টীকাবিহীন রচনা লিখন করে @Bean
?
@Bean
public BasicAuthenticationEntryPoint entryPoint() {
BasicAuthenticationEntryPoint basicAuthEntryPoint = new BasicAuthenticationEntryPoint();
basicAuthEntryPoint.setRealmName("My Realm");
return basicAuthEntryPoint;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.exceptionHandling()
.authenticationEntryPoint(entryPoint())
.and()
.authorizeUrls()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Bean
এবং এর মাধ্যমে মন্তব্য করে@Primary
)।