2009-07-29 2 views
32

Was ist der einfachste Weg, um eine Bean-ID innerhalb dieser Bean (im Java-Code) abzurufen, ohne einen BeanPostProcessor zu verwenden, um ein Feld zu setzen?Wie bekomme ich im Frühjahr die ID einer Bohne aus der Bohne?

Die einzige Art, wie ich denken kann, ist so etwas wie dieser mit einem BeanPostProcessor:

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

Gibt es eine bessere Art und Weise, die mich nicht verlangt eine zusätzliche Klasse oder kennen die Klasse der Bohne zu schreiben, in Frage? Ich habe versucht, die Dokumente und Google zu durchsuchen, aber ich bin mir nicht sicher, wonach ich suchen muss.

Danke!

Antwort

46

Implementieren Sie einfach die org.springframework.beans.factory.BeanNameAware Schnittstelle und Sie werden es automatisch erhalten. Es hat eine Methode:

void setBeanName(String name) 
+0

Danke! Genau das, was ich gesucht habe. – Dan

+3

Es ist ein bisschen eine Schande, dass Spring keine Annotation dafür bietet, die den Namen direkt in das Feld der Bean injiziert bekommen könnte, ohne die Schnittstelle und den öffentlichen Setter zu benötigen. Hah gut. – skaffman

+0

@skaffman - Sie beeindrucken mich immer mit Ihrer einfachen Kenntnis des Frühlings. Ich suche deine Antworten. – duffymo

Verwandte Themen