একটি bean scope নিয়ন্ত্রণ করে container কতগুলো instance তৈরি করবে এবং সেগুলো কতক্ষণ বাঁচবে। lifecycle callback আপনাকে একটি bean তৈরি হওয়ার ঠিক পরে এবং ধ্বংস হওয়ার ঠিক আগে code চালাতে দেয়।
একটি bean scope নিয়ন্ত্রণ করে container কতগুলো instance তৈরি করবে এবং সেগুলো কতক্ষণ বাঁচবে। lifecycle callback আপনাকে একটি bean তৈরি হওয়ার ঠিক পরে এবং ধ্বংস হওয়ার ঠিক আগে code চালাতে দেয়।
@Service // singleton by default — one shared OrderService for the whole app
public class OrderService { }
@Component
@Scope("prototype") // fresh instance on every getBean/inject
public class ReportBuilder { }
ক্লাসিক ফাঁদ: একটি singleton-এ একটি prototype inject করা। singleton একবারই যুক্ত হয়, তাই এটি চিরকাল একটিমাত্র prototype instance ধরে রাখে — "প্রতিবার নতুন"-এর প্রতিশ্রুতি ভেঙে যায়। @Lookup, একটি ObjectProvider<ReportBuilder>, বা scoped-proxy দিয়ে এটি ঠিক করুন।
@Component
public class ConnectionPool {
@PostConstruct // runs after dependencies are injected, before use
public void open() { /* open sockets, warm caches */ }
@PreDestroy // runs on graceful container shutdown (singletons only)
public void close() { /* release resources */ }
}
গুরুত্বপূর্ণ: Spring prototype bean-এ @PreDestroy কল করে না — এটি সেগুলো হস্তান্তর করে ও ট্র্যাক করা বন্ধ করে, তাই তাদের cleanup-এর মালিক আপনি।
এটি Spring-কে জাদু হিসেবে দেখা মানুষ এবং container বোঝা মানুষকে আলাদা করে। singleton-এ-prototype-ধরে-রাখা bug একটি প্রিয় interview দৃশ্যপট কারণ এটি সূক্ষ্ম এবং প্রকৃত production bug ঘটায়। singleton-কে যে stateless ও thread-safe হতে হয় (তারা সব request thread-এ ভাগ করা) তা জানা হলো সেই ব্যবহারিক শিক্ষা যা interviewer-রা শুনতে চান।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন