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

时间:2016-10-06 13:59:50

标签: java spring spring-mvc spring-annotations spring-bean

我有这样的豆:

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

我想自动发送它:

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

我需要类似的东西:

@Bean(name="myCustomBean")

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

1 个答案:

答案 0 :(得分:22)

您可以使用任何 @Component 注释中的任何一个来设置名称。 这是official doc。

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

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

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

  

2.2.6。自定义bean命名

     

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

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");
    }
} 

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

<强>更新

你在春天4.3.3

中提出的已经可用
  

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

@Configuration
public class AppConfig {

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

}