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:

Java
// 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();
Kotlin
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:

Java
AApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
Kotlin
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:

Java
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
Kotlin
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:

Java
GenericApplicationContext context = new GenericApplicationContext();
new GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy");
context.refresh();
Kotlin
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).