Size: a a a

2020 February 21

VP

Vladimir Petrakovich in Kotlin JVM
Vabka
> При чем тут зависимости вообще?
Это уже второй вопрос. А как работать с IoC контейнером, когда ты роутишь не к некоторому классу, а к лямбде/функции?
Использование контейнера вообще не связано с обработкой запроса. Вы можете структурировать код как хотите. Можно и без контейнера.
источник

V

Vabka in Kotlin JVM
Alexander Nozik
Как работают аннотации?
Я хз как работают аннотации в жаве. Метаданные добавляют в код?
источник

SZ

Sergey Zolotov in Kotlin JVM
Vabka
или перед роутом руками конфигурировать контейнер, а в роутинге писать лямбду типа
get("/myResource/{resourceId}") {
        /*как-то провалидировать запрос*/
        val resourceId = /*вытащить id*/
        val service = container.resolve<MyReourceService>()
        call.respondJson(service.get(resourceId))
      }
а что плохого? можешь свой экстеншен сделать, но это добавит только магии
источник

AN

Alexander Nozik in Kotlin JVM
Vabka
Я хз как работают аннотации в жаве. Метаданные добавляют в код?
Ну как в си шарпе они работаю, в чем угодно. Как фреймворк знает, что надо этот метод подставлять?
источник

BP

Bogdan Panchenko in Kotlin JVM
Vabka
А есть вариант шоб функции/методы помечать роутами?
Нет
источник

V

Vabka in Kotlin JVM
Vladimir Petrakovich
Использование контейнера вообще не связано с обработкой запроса. Вы можете структурировать код как хотите. Можно и без контейнера.
Ну типа понятно, как контейнер впихнуть, когда ты имеешь класс и прокидываешь зависимости в конструктор, а потом на этом классе вызываешь методы при обработке запроса.
А как это делать, когда у тебя голые функции?
источник

BP

Bogdan Panchenko in Kotlin JVM
Vabka
А есть какие примеры, как вообще пишутся хендлеры в кторе, когда их пара десятков? Не всё же в роутконфиг. Как на файлы делить?
(в доке не нашёл ответа)
Я по а не а разные файлы делю, но я думаю что нужно тупо делать разные модули
источник

VP

Vladimir Petrakovich in Kotlin JVM
Vabka
Ну типа понятно, как контейнер впихнуть, когда ты имеешь класс и прокидываешь зависимости в конструктор, а потом на этом классе вызываешь методы при обработке запроса.
А как это делать, когда у тебя голые функции?
Если они top-level, то предполагается, что они не зависят ни от чего. Если нет - то лежат в классе, в который точно так же всё и засовывается 🤷‍♂️
источник

V

Vabka in Kotlin JVM
Alexander Nozik
Ну как в си шарпе они работаю, в чем угодно. Как фреймворк знает, что надо этот метод подставлять?
Ну в шарпе фреймворк просканит сборку и запишет роуты с методами, у которых нужные атрибуты. Ещё запишет откуда надо вытягивать аргументы (тело, роут, квери)
источник

AN

Alexander Nozik in Kotlin JVM
Vabka
Ну в шарпе фреймворк просканит сборку и запишет роуты с методами, у которых нужные атрибуты. Ещё запишет откуда надо вытягивать аргументы (тело, роут, квери)
Сборку, прям исходный код? точно?
источник

V

Vabka in Kotlin JVM
Alexander Nozik
Сборку, прям исходный код? точно?
Сборка, в смысле assembly, в смысле dll
источник

BP

Bogdan Panchenko in Kotlin JVM
Vabka
А как зависимости инжектить?
Ктор не фреймворк это не спринг/asp net
источник

AN

Alexander Nozik in Kotlin JVM
Vabka
Сборка, в смысле assembly, в смысле dll
Как вы себе представляете скан dll?
источник

BP

Bogdan Panchenko in Kotlin JVM
Alexander Nozik
При чем тут зависимости вообще? Что делает аннотация? Она генерит роут и прокидывает результат работы метода в ответ на запрос с использованием Content negotiation. Что делает функция, которую я написал выше? Ровно то же самое, только с типовой безопасностью и без рефлективных плясок.
Ну человек хочет разбить на контроллеры
источник

AN

Alexander Nozik in Kotlin JVM
Bogdan Panchenko
Ну человек хочет разбить на контроллеры
Да нет, пожалуйста. Это легко делается и без рефлективной магии. Во
источник

V

Vabka in Kotlin JVM
Alexander Nozik
Как вы себе представляете скан dll?
Assembly.GetTypes() и в фориче потом проходишься по всем классам
источник

AN

Alexander Nozik in Kotlin JVM
Vabka
Assembly.GetTypes() и в фориче потом проходишься по всем классам
Вы точно уверены, что это при компилляции делается?
источник

BP

Bogdan Panchenko in Kotlin JVM
Alexey Otts
Все уже так привыкли ко всей этой рефлексивной магии, что теперь "нормальный" код считается "странными практиками"
+
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexander Nozik
Как вы себе представляете скан dll?
DLL == JAR в контексте .net
источник

VP

Vladimir Petrakovich in Kotlin JVM
Да так же как в спринге всё
источник