Приоритеты разрешения компонентов
PRTelegramBot поддерживает одновременную работу нескольких экземпляров ботов. В связи с этим в библиотеке используется система приоритетов компонентов, которая позволяет независимо настраивать инфраструктурные зависимости (логгеры, сериализаторы, менеджеры и т.д.) для каждого экземпляра бота.
Благодаря этой системе:
каждый бот может использовать собственные реализации компонентов (логгеры, сериализаторы, менеджеры и т.д.);
общие компоненты могут быть заданы через DI-контейнер;
при необходимости конкретный бот может переопределить любой компонент через билдер, не влияя на другие экземпляры ботов.
Такая модель позволяет гибко комбинировать:
глобальную конфигурацию приложения;
общие сервисы, предоставляемые через DI;
точечную настройку поведения конкретного бота.
Для отдельных компонентов системы применяется единая система приоритетов. На данный момент это касается следующих компонентов:
ILoggerFactoryILogger— зависит от приоритетаILoggerFactoryIWhiteListManagerIAdminManagerIInlineMenuConverterIPRSerializer
Порядок разрешения значения компонента:
Параметр, заданный в билдере — если вы явно установили компонент через билдера, он используется в первую очередь.
DI контейнер — если компонент не задан в билдере, проверяется наличие регистрации через Dependency Injection.
Значение по умолчанию — если ни билдера, ни DI нет, используется дефолтная реализация компонента.
Принцип работы: Если параметр в билдере пустой → ищем в DI → если DI не настроен → используем значение по умолчанию.
Last updated