次のようなBeanがあります。
@Bean
public String myBean(){
return "My bean";
}
私はそれを自動配線したい:
@Autowired
@Qualifier("myBean")
public void setMyBean(String myBean){
this.myBean=myBean;
}
私のようなものが必要です:
@Bean(name="myCustomBean")
そのままの状態でBeanにカスタム名を使用することは可能ですか?すぐに使用できない場合、そのようなBeanを作成する方法は?
@ Componentの1つアノテーションを使用して、名前を設定できます。こちらが official docです。
@Service("myMovieLister")
public class SimpleMovieLister {
// ...
}
これにより、simpleMovieListerではなくmyMovieListerというBeanが作成されます。
JavaConfigの場合これは、sing @Beanの例に適用されます。
2.2.6。 Beanの命名のカスタマイズ
デフォルトでは、JavaConfigは@ Beanメソッドの名前を結果の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");
}
}
============================
更新:
あなたが求めているのは既に利用可能 Springで 4.3.
デフォルトでは、構成クラスは結果のBeanの名前として@Beanメソッドの名前を使用します。ただし、この機能は、name属性を使用してオーバーライドできます。
@Configuration
public class AppConfig {
@Bean(name = "myFoo")
public Foo foo() {
return new Foo();
}
}