2009-07-29 14 views
32

¿Cuál es la forma más fácil de recuperar una ID de bean desde el interior de ese bean (en el código de Java) sin usar BeanPostProcessor para establecer un campo?¿Cómo obtener la identificación de un frijol dentro del frijol en primavera?

La única manera que puedo pensar es algo como esto usando un BeanPostProcessor:

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

¿Hay una mejor manera de que no me requiere para escribir una clase extra o conocer la clase del frijol en ¿pregunta? Traté de buscar en los documentos y en Google, pero no estoy muy seguro de lo que necesito buscar.

Gracias!

Respuesta

46

Simplemente implemente la interfaz org.springframework.beans.factory.BeanNameAware y la obtendrá automáticamente. Tiene un método:

void setBeanName(String name) 
+0

¡Gracias! Exactamente lo que estaba buscando. – Dan

+3

Es una pena que Spring no proporcione una anotación para esto que podría obtener el nombre inyectado directamente en el campo del bean sin necesidad de la interfaz y el organismo público. Hah bien. – skaffman

+0

@skaffman - siempre me impresionas con tu fácil conocimiento de Spring. Busco tus respuestas – duffymo

Cuestiones relacionadas