【问题标题】:How to get the id of a bean from inside the bean in Spring?如何从 Spring 中的 bean 中获取 bean 的 id?
【发布时间】:2009-07-29 10:45:39
【问题描述】:

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

我能想到的唯一方法是使用 BeanPostProcessor:

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

是否有更好的方法不需要我编写额外的类或知道相关 bean 的类?我尝试通过文档和 Google 搜索,但我不确定我需要寻找什么。

谢谢!

【问题讨论】:

    标签: java spring javabeans


    【解决方案1】:

    只要实现org.springframework.beans.factory.BeanNameAware接口,你就会自动得到它。它有一种方法:

    void setBeanName(String name)
    

    【讨论】:

    • 谢谢!正是我想要的。
    • 有点遗憾的是,Spring 没有为此提供注释,可以将名称直接注入到 bean 的字段中,而无需接口和公共设置器。呵呵。
    • @skaffman - 你对 Spring 的简单了解总是给我留下深刻印象。我在寻找你的答案。
    • @skaffmann - 我认为这是因为没有一个 Spring 作者建议类依赖于 bean 名称,因为这通常会导致通过 ApplicationContext 直接访问。这与 DI 几乎相反。如果您编写一个小的弹簧扩展,您通常不会担心是否还有其他(技术)方法。
    • 我想要这个是因为每个实例都有一个 name 参数,我需要它来打印出统计信息,而且因为无论如何我都必须设置 bean 名称,所以我希望能够只设置一个。这让我可以做到这一点(Java 代码中的名称不用于访问 Spring)。如果名称用于访问应用程序上下文,我可以看到这可能会带来问题。
    猜你喜欢
    • 2014-08-26
    • 2010-10-08
    • 2014-02-21
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2019-06-08
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多