2009-07-29 9 views
32

Qual è il modo più semplice per recuperare un ID di bean da quel bean (nel codice Java) senza utilizzare un BeanPostProcessor per impostare un campo?Come ottenere l'id di un bean dall'interno del bean in primavera?

L'unico modo che posso pensare è qualcosa di simile utilizzando un BeanPostProcessor:

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

C'è un modo migliore che non mi richiede di scrivere una classe in più o conoscere la classe del fagiolo in domanda? Ho provato a cercare tra i documenti e su Google, ma non sono proprio sicuro di cosa ho bisogno di cercare.

Grazie!

risposta

46

Basta implementare l'interfaccia org.springframework.beans.factory.BeanNameAware e lo otterrete automaticamente. Ha un metodo:

void setBeanName(String name) 
+0

Grazie! Esattamente quello che stavo cercando. – Dan

+3

È un peccato che Spring non fornisca un'annotazione per questo che possa far iniettare il nome direttamente nel campo del bean senza bisogno dell'interfaccia e del setter pubblico. Hah bene. – skaffman

+0

@skaffman: mi impressiona sempre con la tua facile conoscenza di Spring. Cerco le tue risposte. – duffymo

Problemi correlati