ApplicationContext
es una interfaz para una fábrica avanzada capaz de mantener un registro de varios
beans y sus dependencias. Utilizando el método T getBean(String name, Class<T> requireType)
,
puede obtener instancias de Bean.
ApplicationContext
le permite leer y acceder a definiciones de beans, como se muestra en el siguiente
ejemplo:
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// get the configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// use the configured instance
List<String> userList = service.getUsernameList();
import org.springframework.beans.factory.getBean
// create and configure beans
val context = ClassPathXmlApplicationContext("services.xml", "daos.xml")
// get the configured instance
val service = context.getBean<PetStoreService>("petStore")
// use the configured instance
var userList = service.getUsernameList()
Cuando se utiliza una configuración Groovy, bootstrap se ve muy similar. Tiene otra clase de implementación de contexto que admite Groovy (pero también comprende las definiciones de beans XML). El siguiente ejemplo muestra la configuración de Groovy:
AApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
val context = GenericGroovyApplicationContext("services.groovy", "daos.groovy")
La opción más flexible es GenericApplicationContext
en combinación con delegados de lectura, como XmlBeanDefinitionReader
para archivos XML, como se muestra en el siguiente ejemplo:
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
val context = GenericApplicationContext()
XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml")
context.refresh()
También puedes usar GroovyBeanDefinitionReader
para archivos Groovy, como se muestra en el siguiente
ejemplo:
GenericApplicationContext context = new GenericApplicationContext();
new GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy");
context.refresh();
val context = GenericApplicationContext()
GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy")
context.refresh()
Puede mezclar y combinar dichos delegados de lectura en el mismo ApplicationContext
leyendo definiciones
de beans de diferentes fuentes de configuración.
Luego puedes usar getBean
para obtener instancias de beans. La interfaz ApplicationContext
tiene varios otros métodos para recuperar beans, pero lo ideal es que nunca deberías usarlos en el código de tu
aplicación. De hecho, el código de su aplicación no debería tener ninguna llamada al método getBean()
y, por lo tanto, no debería depender en absoluto de las API de Spring. Por ejemplo, la integración de Spring con
marcos web proporciona inyección de dependencia para varios componentes del marco web, como controladores y beans
JSF administrados, lo que le permite declarar una dependencia en un bean en particular usando metadatos (como
anotaciones de cableado automático).