Я вот им пытался пользоваться, но когда дошел до ресурсов, то все желание пропало.
В каждой функции, где ты используешь этот ресурс, нужно писать Closing зачем-то (хотя как бы фреймфорк и так знает, что это ресурс).
Если ты забудешь написать, то ресурс не будет закрываться.
И самое главное, если функция выкинула исключение, то ресурс закрыт не будет. Я не понимаю, как можно было так сделать, и как после таких вещей им можно пользвоаться.
Есть dependency, которые нужно всегда передавать при создании инстанса контейнера, но нет провайдера, который бы создал объект один раз при иницилизации контейнера и все. Есть синглтон, который будет при каждом вызыве проверять, создавался ли объект или нет, и если нет, то создавать его, что мне кажется пустая трата процессорного времени. То есть, простой запуск приложения — еще не гарантия того, что конфигурация правильная и т.д. Конечно, это решается тестами, но зачем ввели синглтон, с ленивым созданием объекта, вместо провайдера, который создает объект при иницилизации контейнера, мне непонятно. А у меня вот было, что большая часть кода — это как раз синглтоны.
Вишенка на торте — это то, что провайдер синглтона по дефолту непотокобезопасный. Я вообще не представляю, зачем так нужно было делать. На питоне пишут обычно либо веб-приложения, либо какие-то скрипты, сомневаюсь, что каким-либо скриптам нужен будет DI, а вот все веб-приложения работают конкурентно. И почему вдруг так получается, что провайдеры непотокобезопасны?