Ho un codice:primavera, lavorando con @Configuration e annotazioni @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");
}
}
mi aspetto, una volta che comincio app, il BeanSample.getSomeBean() allora SomeBean si avvia ad essere disponibile ' someBean'.
Bu ora ho un errore: No fagiolo di nome 'someBean' è definito
In realtà, io non capisco che Dot app-contesto dovrei usare per raccogliere i miei fagioli in su?
Circa @Configuration:
Eventuali ragioni, perché dovrei usare @Configuration annotazione qui? (Con questo, il mio IDE mette in evidenza le mie lezioni come se fosse primavera-correlato allora, quindi dovrebbe avere un senso)
- OK: dopo aver ottenuto una risposta il mio codice è simile al seguente:
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");
}
Ok, ho cambiato la mia domanda allora. – ses
E ho cambiato la mia risposta. ;) – rolve
ok. Funziona. Ho spostato anche BeanSample - non per essere interno. Inoltre, hai fornito il costruttore predefinito per BeanSample. Cercando di capire perché ho bisogno di: @Configuration quindi .. – ses