2009-07-29 9 views
32

फ़ील्ड सेट करने के लिए बीनपोस्टप्रोसेसर का उपयोग किए बिना उस बीन (जावा कोड में) के अंदर से बीन आईडी पुनर्प्राप्त करने का सबसे आसान तरीका क्या है?वसंत में बीन के अंदर से एक बीन की आईडी कैसे प्राप्त करें?

public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { 
    ((MyBean)bean).setName(beanName); 
    return bean; 
} 

वहाँ एक बेहतर तरीका है कि मुझे आवश्यकता नहीं है में एक अतिरिक्त वर्ग लिख सकते हैं या सेम के वर्ग पता करने के लिए है:

एक ही रास्ता मैं के बारे में सोच सकते हैं कि यह एक BeanPostProcessor का उपयोग कर की तरह कुछ है सवाल? मैंने दस्तावेज़ों और Google पर खोज करने का प्रयास किया, लेकिन मुझे सच में यकीन नहीं है कि मुझे क्या देखना है।

धन्यवाद!

उत्तर

46

बस org.springframework.beans.factory.BeanNameAware इंटरफ़ेस को लागू करें और आप इसे स्वचालित रूप से प्राप्त करेंगे। इसमें एक विधि है:

void setBeanName(String name) 
+0

धन्यवाद! ठीक वही जो मेरे द्वारा खोजा जा रहा था। – Dan

+3

यह एक शर्म की बात है कि वसंत इस के लिए एक एनोटेशन प्रदान नहीं करता है जो इंटरफ़ेस और सार्वजनिक सेटटर की आवश्यकता के बिना सीधे बीन के क्षेत्र में इंजेक्शन दिया जा सकता है। हां ठीक है – skaffman

+0

@ स्काफमैन - आप हमेशा मुझे वसंत के अपने आसान ज्ञान से प्रभावित करते हैं। मैं आपके उत्तरों की तलाश करता हूं। – duffymo

संबंधित मुद्दे