在Spring框架中,是否可以使用注释来设置Bean的名称?

50

我有一个像这样的豆子:

@Bean
public String myBean(){
    return "My bean";
}

我想进行自动装配:

@Autowired
@Qualifier("myBean")
public void setMyBean(String myBean){
    this.myBean=myBean;
}

我需要类似这样的东西:

@Bean(name="myCustomBean")

是否可以直接使用自定义名称来创建Bean?如果不能直接创建,则如何创建此类Bean?


1
@Bean注解确实已经有了name属性,所以为什么你还在问“我需要像...这样的东西”?这已经存在了。 - Jesper
1
但是还是一样的。@Bean(name = "...")已经存在。如果这不是你的意思,那么你想表达什么?你的问题不清楚。 - Jesper
@Jesper 抱歉,我不知道这个功能是在Spring的第4个版本中引入的。我应该更新它。 - Oleksandr
1
@GhostCat 非常感谢 :) - Oleksandr
当然,晚上好! :) - Oleksandr
1个回答

60

您所询问的内容在Spring reference中已经可用。

默认情况下,配置类使用@Bean方法的名称作为生成的bean的名称。但是,可以使用name属性覆盖此功能。

@Configuration
public class AppConfig {

    @Bean(name = "myFoo")
    public Foo foo() {
        return new Foo();
    }

}

1
谢谢您的帮助。我认为我的问题不够清楚。我想使用自定义名称。同时,您不能在方法上使用@Component注释。 - Oleksandr
@Noel Yap,我保留了那个“额外信息”以记住Spring是如何发展的。这就是为什么我划掉了那段文字。你能重新添加吗?谢谢。 - Sundararaj Govindasamy
在我看来,这篇回答中不应该包含这样的历史背景。例如,由于前几句话就提到了历史,我差点错过了真正的答案。首要考虑的是 SO 的目的以及使用它的人们试图解决的主要问题。 - Noel Yap
或者,原始的、传统的答案可以被保留下来,同时创建一个新的、更加现代化的答案。 - Noel Yap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接