Java 如何在春季从bean内部获取bean的id?
在不使用BeanPostProcessor设置字段的情况下,从bean内部(在Java代码中)检索bean id的最简单方法是什么 我能想到的唯一方法是使用BeanPostProcessor执行类似的操作:Java 如何在春季从bean内部获取bean的id?,java,spring,javabeans,Java,Spring,Javabeans,在不使用BeanPostProcessor设置字段的情况下,从bean内部(在Java代码中)检索bean id的最简单方法是什么 我能想到的唯一方法是使用BeanPostProcessor执行类似的操作: public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { ((MyBean)bean).setName(beanName); retu
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
((MyBean)bean).setName(beanName);
return bean;
}
有没有更好的方法不需要我编写一个额外的类或知道所讨论的bean的类?我试着在谷歌上搜索文档,但我不确定我需要寻找什么
谢谢 只需实现该接口,您就会自动获得它。它有一种方法:
void setBeanName(String name)
非常感谢。这正是我想要的。令人遗憾的是,Spring没有为此提供注释,可以将名称直接注入bean的字段,而不需要接口和公共setter。哈,好吧。@skaffman-你对春天的简单知识总是给我留下深刻印象。我在寻找你的答案。@skaffmann-我认为这是因为没有一位Spring作者建议类依赖于bean名称,因为这通常会导致通过ApplicationContext直接访问。这与DI的含义几乎相反。如果编写一个小的spring扩展,您通常不必担心是否还有一个(技术)方法。我之所以需要这个方法,是因为每个实例都有一个name参数,我需要它来打印统计数据,而且因为我必须设置bean名称,所以我希望能够只设置一个。这让我可以做到这一点(Java代码中的名称不用于访问Spring)。我可以看出,如果使用该名称访问应用程序上下文,这可能会带来问题。