лень лезть в доку ,так что по памяти. DI просто идет по иерархии в поиске корректной зависимости. Встретив Optional - останавливается и отдает что есть (в том числе и "ничего") — на этом его работа заканчивается, и начинается работа того кто поставил Optional. Собственно, их там несколько указателей для DI — "смотреть вверх", "смотреть внутрь", "отдай что есть и отвали" (это как раз опшионал). Если таких указателей нет - идем по иерархии до самого верхнего, который всегда возвращает "сорян бро, я ничего не нашел, сношайся как знаешь"