ApplicationContext — це інтерфейс для просунутої фабрики, здатної підтримувати реєстр різних бінів та їх залежностей. За допомогою методу T getBean(String name, Class<T> requiredType) можна отримати екземпляри бінів.

ApplicationContext дозволяє читати визначення бінів і отримувати доступ до них, як показано в наступному прикладі:

Java
// створюємо та конфігуруємо біни
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// Отримуємо сконфігурований екземпляр
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// використовуємо конфігурований екземпляр
List<String> userList = service.getUsernameList();
Kotlin
import org.springframework.beans.factory.getBean
// створюємо та конфігуруємо біни
val context = ClassPathXmlApplicationContext("services.xml", "daos.xml")
// Отримуємо сконфігурований екземпляр
val service = context.getBean<PetStoreService>("petStore")
// використовуємо конфігурований екземпляр
var userList = service.getUsernameList()

При використанні конфігурації Groovy початкове завантаження виглядає дуже схожим чином. Вона має інший клас реалізації контексту, який підтримує Groovy (але також розуміє визначення XML-бінів). У наступному прикладі показано конфігурацію Groovy:

Java
ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
Kotlin
val context = GenericGroovyApplicationContext("services.groovy", "daos.groovy")

Найбільш гнучким варіантом є GenericApplicationContext у поєднанні з делегатами зчитування, наприклад, з XmlBeanDefinitionReader для файлів XML, як показано в наступному прикладі:

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()

Також можна використовувати GroovyBeanDefinitionReader для файлів Groovy, як показано в наступному прикладі:

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()

Можна змішувати та поєднувати такі делегати зчитування на тому самому ApplicationContext, зчитуючи визначення бінів із різних джерел конфігурації.

Потім можна використовувати getBean для отримання екземплярів бінів. Інтерфейс ApplicationContext має кілька інших методів для отримання бінів, але в ідеалі в коді програми їх ніколи не слід використовувати. Дійсно, в коді твоєї програми не повинно бути викликів методу getBean() взагалі, і тому він взагалі не повинен залежати від API-інтерфейсів Spring. Наприклад, інтеграція Spring з вебфреймворками забезпечує впровадження залежностей для різних компонентів веб-фреймворку, таких як контролери та керовані JSF-біни, що дозволить оголосити залежність від конкретного біна за допомогою метаданих (наприклад, анотації автоматичного виявлення та зв'язування (autowiring).