ApplicationContext — це інтерфейс для просунутої фабрики, здатної підтримувати реєстр різних бінів та їх залежностей. За допомогою методу T getBean(String name, Class<T> requiredType) можна отримати екземпляри бінів.
ApplicationContext дозволяє читати визначення бінів і отримувати доступ до них, як показано в наступному прикладі:
// створюємо та конфігуруємо біни
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// Отримуємо сконфігурований екземпляр
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// використовуємо конфігурований екземпляр
List<String> userList = service.getUsernameList();
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:
ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
val context = GenericGroovyApplicationContext("services.groovy", "daos.groovy")
Найбільш гнучким варіантом є GenericApplicationContext у поєднанні з делегатами зчитування, наприклад, з XmlBeanDefinitionReader для файлів XML, як показано в наступному прикладі:
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()
Також можна використовувати GroovyBeanDefinitionReader для файлів Groovy, як показано в наступному прикладі:
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()
Можна змішувати та поєднувати такі делегати зчитування на тому самому ApplicationContext, зчитуючи визначення бінів із різних джерел конфігурації.
Потім можна використовувати getBean для отримання екземплярів бінів. Інтерфейс ApplicationContext має кілька інших методів для отримання бінів, але в ідеалі в коді програми їх ніколи не слід використовувати. Дійсно, в коді твоєї програми не повинно бути викликів методу getBean() взагалі, і тому він взагалі не повинен залежати від API-інтерфейсів Spring. Наприклад, інтеграція Spring з вебфреймворками забезпечує впровадження залежностей для різних компонентів веб-фреймворку, таких як контролери та керовані JSF-біни, що дозволить оголосити залежність від конкретного біна за допомогою метаданих (наприклад, анотації автоматичного виявлення та зв'язування (autowiring).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ