2009-07-29 9 views
32

Jaki jest najprostszy sposób na pobranie identyfikatora komponentu bean z wnętrza tego komponentu bean (w kodzie Java) bez użycia BeanPostProcessor do ustawienia pola?Jak uzyskać identyfikator fasoli z fasoli na wiosnę?

Jedynym sposobem można myślę, jest coś takiego, używając w BeanPostProcessor:

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

Czy istnieje lepszy sposób, który nie wymaga mnie napisać dodatkową klasę lub poznać klasę w fasoli pytanie? Próbowałem przeszukiwać dokumenty i Google, ale nie jestem pewien, czego potrzebuję.

Dzięki!

Odpowiedz

46

Wystarczy zaimplementować interfejs org.springframework.beans.factory.BeanNameAware, a otrzymasz go automatycznie. Ma jedną metodę:

void setBeanName(String name) 
+0

Dziękujemy! Dokładnie to, czego szukałem. – Dan

+3

To trochę szkoda, że ​​Spring nie zapewnia adnotacji, która mogłaby dostać nazwę wstrzykniętą bezpośrednio do pola fasoli bez potrzeby interfejsu i ustawiacza publicznego. Hah dobrze. – skaffman

+0

@skaffman - zawsze imponujesz mi swoją prostą znajomością Spring. Szukam twoich odpowiedzi. – duffymo

Powiązane problemy