我有这样的豆:
@Bean
public String myBean(){
return "My bean";
}
我想自动发送它:
@Autowired
@Qualifier("myBean")
public void setMyBean(String myBean){
this.myBean=myBean;
}
我需要类似的东西:
@Bean(name="myCustomBean")
是否可以使用开箱即用的自定义名称名称?如果开箱即可,那么如何创建这样的bean?
答案 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();
}
}