我有一個代碼:春天,@Configuration和@Bean註釋工作
@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」。
卜現在我有一個錯誤:無豆名爲「someBean」被定義
其實,我斑點不明白其中的應用程序上下文應該使用來接我的豆子呢?
關於@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");
}
好的,我改變了我的問題。 – ses
我改變了我的答案。 ;) – rolve
好的。有用。我也移動BeanSample - 不是內在的。此外,還提供了BeanSample的默認構造函數。試圖理解爲什麼我需要:@Configuration然後.. – ses