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).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ