que tiene un código:primavera, se trabaja con @Configuration y anotaciones @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");
}
}
Estoy esperando, una vez que comience la aplicación, el BeanSample.getSomeBean(), entonces se inicia SomeBean que esté disponible a ' someBean '.
Bu ahora tengo un error: No se bean llamado 'someBean' se define
En realidad, no entiendo qué aplicación DOT-contexto que debe utilizar para recoger mis habas para arriba?
Sobre @Configuration:
Cualquier razón, ¿por qué debería usar @Configuration anotación aquí? (Con éste, mi IDE resalta mis clases por así decirlo relacionado Primavera-a continuación, por lo que debe tener sentido)
- bien: después de que consiguiera una respuesta de mi código es el siguiente:
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, he cambiado mi pregunta entonces. – ses
Y cambié mi respuesta. ;) – rolve
bien. funciona. También moví BeanSample, no para ser interno. Además, he proporcionado el constructor predeterminado para BeanSample. Tratando de entender por qué necesito: @Configuration luego ... – ses