Dependency Injection в Go от Google - Wire Golang. ГАЙД

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 13

  • @ЕленаЕкимцева-з5т
    @ЕленаЕкимцева-з5т 8 месяцев назад +3

    Видео 💥 Спасибо за труд! Дальнейших успехов!

    • @VyacheArt
      @VyacheArt  8 месяцев назад +1

      Спасибо!

  • @АлександрЗверев-й1х
    @АлександрЗверев-й1х 8 месяцев назад

    Спасибо большое. Будет продолжение, но уже с reflection based DI?

    • @VyacheArt
      @VyacheArt  6 месяцев назад

      Думаю да, в будущем расскажу про uber/dig и defval/di. Спасибо!

  • @DmitryNULL
    @DmitryNULL 8 месяцев назад

    Вы упомянули, что используете 2 типа для чтения/записи бд. Непонятно что такое типы, но мы открывали 2 коннекта к базе и оборачивали в структуру, а когда надо чтото делать с бд, то явно указываем в какую реплику идти.
    Судя по видео вы пытаетесь из го сделать джаву, что противоречит философии го. Есть фидбэк от людей, которые приходили к вам в команду и глядя на репозиторий говорили, что это очень круто/отстойно?
    Как я понял у вас есть опыт разработки монолитов на го. Не могли бы вы поделиться причинами такого выбора и какими нибудь сравнительными тестами(rps, memory, profiler...) монолита с микросервисами на го? Да и вообще про монолиты на го было бы интересно узнать(на сколько сложно поддерживать, какие трудности есть, как воююете с жирными бинарниками, какой размер монолита...)

  • @Александр-б6с3ъ
    @Александр-б6с3ъ 8 месяцев назад

    Не хватает про shared зависимости темы. Часто в ногу стреляют себе не понимая, что создается, а что переиспользуется. Каждый инжектор создает по умолчанию для себя новые зависимости независимые. Если использовать более 1 инжектора и где-то в графе зависимостей нужен будет общий логер например или коннект к базе данных, то там для каждого графа зависимостей в рамках инжектора будут провайдеры вывываться и возвращать новые инстансы (если провайдер не сделан специально как singleton возврат). В symfony DI это опция `shared` регулирует явно например. Об этом стоило бы подсветить и показать как оба варианта решать в wire, чтобы дать более полные знания

    • @VyacheArt
      @VyacheArt  6 месяцев назад

      Можно сказать, что в Wire всё что создаётся в процессе "shared", то есть созданный единожды *log.Logger будет прокидываться далее во все инжекторы, которые требуют *log.Logger. Это можно заметить по сгенерированному файлу. Более того, нельзя использовать два инжектора, которые будут возвращать инстансы одного и того же типа, это тоже подсветил в разделе "5. Типы значений в Wire или ошибка multiple bindings for". Тут как раз наоборот, если нужно два логгера, то у каждого должен быть свой тип (через type aliasing, например), и для каждого типа свой провайдер. Тогда создадутся два независимых инстанса.

    • @Александр-б6с3ъ
      @Александр-б6с3ъ 6 месяцев назад

      @@VyacheArt Да , все так, в гайде об этом не хватило информации, хотя он выглядит достаточно основательным и полным. Если будет вторая часть, то этот гайд с дополнением можно смело давать новичкам, зная что он полный

  • @qbee1
    @qbee1 4 месяца назад

    белая тема это сильно, чуть не ослеп

  • @it1860
    @it1860 8 месяцев назад +1

    1

  • @xoka3130
    @xoka3130 8 месяцев назад

    жаль ток утиная типизация интерфейсов пропадает

    • @VyacheArt
      @VyacheArt  8 месяцев назад

      Ну она фактически остаётся, просто явно нужно биндить интерфейс и имплементацию 🙂
      Но неявно да, оно не славливается

  • @aleksandrkravtsov8727
    @aleksandrkravtsov8727 5 месяцев назад

    это точно проще чем руками создать структурки?