Bean scope ले container ले कति instance बनाउँछ र तिनीहरू कति समय बाँच्छन् भन्ने नियन्त्रण गर्छ। Lifecycle callbacks ले तपाईंलाई bean निर्माण भएको ठीक पछि र यो नष्ट हुनुभन्दा ठीक अघि code चलाउन दिन्छ।
Bean scope ले container ले कति instance बनाउँछ र तिनीहरू कति समय बाँच्छन् भन्ने नियन्त्रण गर्छ। 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 { }
Classic जाल: singleton मा prototype 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 बोलाउँदैन — यसले तिनीहरूलाई सुम्पन्छ र track गर्न बन्द गर्छ, त्यसैले तिनको cleanup को स्वामित्व तपाईंको हुन्छ।
यसले Spring लाई जादूको रूपमा लिनेहरूलाई container बुझ्नेहरूबाट छुट्याउँछ। singleton-ले-prototype-राख्ने bug एउटा मनपर्ने interview परिदृश्य हो किनभने यो सूक्ष्म छ र वास्तविक production bug निम्त्याउँछ। singleton हरू stateless र thread-safe हुनुपर्छ (तिनीहरू सबै request thread हरूभरि साझा हुन्छन्) भन्ने थाहा पाउनु interviewer हरूले सुन्ने व्यावहारिक takeaway हो।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्