Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在春季从bean内部获取bean的id?_Java_Spring_Javabeans - Fatal编程技术网

Java 如何在春季从bean内部获取bean的id?

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

在不使用BeanPostProcessor设置字段的情况下,从bean内部(在Java代码中)检索bean id的最简单方法是什么

我能想到的唯一方法是使用BeanPostProcessor执行类似的操作:

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)。我可以看出,如果使用该名称访问应用程序上下文,这可能会带来问题。