ایک bean scope یہ کنٹرول کرتا ہے کہ container کتنے instances بناتا ہے اور وہ کتنی دیر زندہ رہتے ہیں۔ Lifecycle callbacks آپ کو کسی bean کے بننے کے فوراً بعد اور اس کے تباہ ہونے سے ذرا پہلے code چلانے دیتی ہیں۔
ایک bean scope یہ کنٹرول کرتا ہے کہ container کتنے instances بناتا ہے اور وہ کتنی دیر زندہ رہتے ہیں۔ Lifecycle callbacks آپ کو کسی 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 { }
کلاسک جال: ایک prototype کو ایک singleton میں inject کرنا۔ Singleton ایک بار wire ہوتا ہے، اس لیے وہ ہمیشہ کے لیے ایک ہی 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 beans پر @PreDestroy کال نہیں کرتا — یہ انہیں حوالے کر کے ان کا سراغ رکھنا چھوڑ دیتا ہے، اس لیے ان کی صفائی آپ کی ذمہ داری ہے۔
یہ ان لوگوں کو جو Spring کو جادو سمجھتے ہیں ان سے الگ کرتا ہے جو container کو سمجھتے ہیں۔ singleton-میں-prototype والا bug ایک پسندیدہ interview منظر ہے کیونکہ یہ باریک ہے اور حقیقی production bugs پیدا کرتا ہے۔ یہ جاننا کہ singletons کو stateless اور thread-safe ہونا چاہیے (وہ تمام request threads کے درمیان مشترک ہوتے ہیں) وہ عملی نکتہ ہے جو interviewers سنتے ہیں۔
تفصیلی جوابات کے ساتھ IT انٹرویو سوالات کی ایک لائبریری — جونیئر سے سینئر تک۔
عطیہ دیں