Приоритеты разрешения компонентов

PRTelegramBot поддерживает одновременную работу нескольких экземпляров ботов. В связи с этим в библиотеке используется система приоритетов компонентов, которая позволяет независимо настраивать инфраструктурные зависимости (логгеры, сериализаторы, менеджеры и т.д.) для каждого экземпляра бота.

Благодаря этой системе:

  • каждый бот может использовать собственные реализации компонентов (логгеры, сериализаторы, менеджеры и т.д.);

  • общие компоненты могут быть заданы через DI-контейнер;

  • при необходимости конкретный бот может переопределить любой компонент через билдер, не влияя на другие экземпляры ботов.

Такая модель позволяет гибко комбинировать:

  • глобальную конфигурацию приложения;

  • общие сервисы, предоставляемые через DI;

  • точечную настройку поведения конкретного бота.

Для отдельных компонентов системы применяется единая система приоритетов. На данный момент это касается следующих компонентов:

  • ILoggerFactory

  • ILogger — зависит от приоритета ILoggerFactory

  • IWhiteListManager

  • IAdminManager

  • IInlineMenuConverter

  • IPRSerializer

Порядок разрешения значения компонента:

  1. Параметр, заданный в билдере — если вы явно установили компонент через билдера, он используется в первую очередь.

  2. DI контейнер — если компонент не задан в билдере, проверяется наличие регистрации через Dependency Injection.

  3. Значение по умолчанию — если ни билдера, ни DI нет, используется дефолтная реализация компонента.

Принцип работы: Если параметр в билдере пустой → ищем в DI → если DI не настроен → используем значение по умолчанию.

Last updated