Spring arbeitet mit @Configuration- und @Bean-Annotationen
Ich habe einen Code:
@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");
}
}
Ich erwarte, sobald ich die App starte, dass die BeanSample.getSomeBean () von SomeBean verfügbar gemacht wird.
Bu jetzt habe ich einen Fehler:Es ist keine Bean mit dem Namen 'someBean' definiert
Eigentlich verstehe ich nicht, mit welchem App-Kontext ich meine Bohnen abholen soll?
Über @Configuration:
Irgendwelche Gründe, warum ich @Configuration Annotation hier verwenden sollte? (In diesem Fall hebt meine IDE meine Klassen sozusagen im Zusammenhang mit dem Frühling hervor, sodass es Sinn machen sollte.)
-OK: Nachdem ich eine Antwort bekommen habe, sieht mein Code so aus:
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");
}