Ale*_*ndr 24 java spring spring-mvc spring-annotations spring-bean
我有这样的豆:
@Bean
public String myBean(){
    return "My bean";
}
Run Code Online (Sandbox Code Playgroud)
我想要自动装配它:
@Autowired
@Qualifier("myBean")
public void setMyBean(String myBean){
    this.myBean=myBean;
}
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
@Bean(name="myCustomBean")
Run Code Online (Sandbox Code Playgroud)
是否可以使用开箱即用的bean自定义名称?如果不可能开箱即可,那么如何创建这样的bean呢?
Sun*_*amy 30
您可以使用任何一个@Component注释来设置名称.这是官方文件.
@Configuration
public class AppConfig {
    @Bean(name = "myFoo")
    public Foo foo() {
        return new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个bean,即myMovieLister,而不是simpleMovieLister.
对于JavaConfig,这适用于使用@Bean的示例.
2.2.6.自定义bean命名
默认情况下,JavaConfig使用@Bean方法的名称作为结果bean的名称.但是,可以使用BeanNamingStrategy扩展点覆盖此功能.
@Configuration
public class AppConfig {
    @Bean(name = "myFoo")
    public Foo foo() {
        return new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)
============================
更新:
你问的问题已经在Spring 4.3.3中提供了
默认情况下,配置类使用@Bean方法的名称作为结果bean的名称.但是,可以使用name属性覆盖此功能.
@Configuration
public class AppConfig {
    @Bean(name = "myFoo")
    public Foo foo() {
        return new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           56646 次  |  
        
|   最近记录:  |