2009-07-29 3 views
32

Каков самый простой способ получить идентификатор компонента изнутри этого компонента (в коде Java) без использования BeanPostProcessor для установки поля?Как получить идентификатор бобов изнутри фасоли весной?

Единственный способ, которым я могу думать, что-то вроде этого, используя BeanPostProcessor:

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

Есть ли лучший способ, который не требует, чтобы я написал дополнительный класс или знать класс бина в вопрос? Я пробовал искать документы и в Google, но я не совсем уверен, что мне нужно искать.

Спасибо!

ответ

46

Просто реализуйте интерфейс org.springframework.beans.factory.BeanNameAware, и вы получите его автоматически. Он имеет один метод:

void setBeanName(String name) 
+0

Спасибо! Именно то, что я искал. – Dan

+3

Немного стыдно, что Spring не предоставляет аннотации для этого, чтобы получить имя, введенное непосредственно в поле bean, без необходимости использования интерфейса и публичного setter. Хорошо. – skaffman

+0

@ skaffman - вы всегда впечатляете меня своим легким знанием Весны. Я ищу ваши ответы. – duffymo

Смежные вопросы