私はコードをもっている:
@Configuration
public class BeanSample {
@Bean(destroyMethod = "stop")
public SomeBean someBean() throws Exception {
return new SomeBean("somebean name1");
}
class SomeBean {
String name;
public SomeBean(String name) {
this.name = name;
}
public void stop() {
System.out.println("stop");
}
}
public static void main(String[] args) throws Exception {
BeanSample beanSample = new BeanSample();
SomeBean someBean1 = beanSample.someBean();
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[] {"appContext.xml"});
SomeBean someBean2 = (SomeBean) appContext.getBean("someBean");
if (someBean1 == someBean2) System.out.println("OK");
}
}
アプリを起動すると、BeanSample.getSomeBean() を実行すると、「someBean」によって SomeBean が利用できるようになると期待しています。
Bu 今、私はエラーがあります: 'someBean' という名前の Bean が定義されていません
実際、Bean を取得するためにどのアプリ コンテキストを使用すればよいかわかりません。
@Configuration について:
ここで @Configuration アノテーションを使用する必要がある理由は何ですか? (これを使用すると、私の IDE は当時の Spring 関連のクラスを強調表示するので、理にかなっているはずです)
-- OK: 回答を得た後、コードは次のようになります。
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(BeanSample.class);
SomeBean someBean2 = (SomeBean) appContext.getBean("someBean");
if (someBean2 != null) System.out.println("OK");
}