是否可以在Spring Framework中使用注释设置bean名称?

我有这样一个bean:

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

我想自动assembly它:

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

我需要这样的东西:

 @Bean(name="myCustomBean") 

是否可以使用开箱即用的bean自定义名称? 如果不可能开箱即可,那么如何创建这样的bean呢?

您可以使用任何一个@Component注释来设置名称。 这是官方文件。

 @Service("myMovieLister") public class SimpleMovieLister { // ... } 

这将创建一个bean,即myMovieLister,而不是simpleMovieLister。

对于JavaConfig,这适用于使用@Bean的示例

2.2.6。 自定义bean命名

默认情况下,JavaConfig使用@Bean方法的名称作为结果bean的名称。 但是,可以使用BeanNamingStrategy扩展点覆盖此function。

 public class Main { public static void main(String[] args) { JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(); ctx.setBeanNamingStrategy(new CustomBeanNamingStrategy()); ctx.addConfigClass(MyConfig.class); ctx.refresh(); ctx.getBean("customBeanName"); } } 

============================

更新:

你问的问题已经在Spring 4.3.3中提供了

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

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