Size: a a a

2020 February 21

AN

Alexander Nozik in Kotlin JVM
Vabka
Я про то что роутинг с контроллерами и аннотациями он же при запуске рефлексией формирует роутинг
Вот рефлексия может работать хоть через какую попу. Я исключительно про классический вариант с прописыванием в routing
источник

AN

Alexander Nozik in Kotlin JVM
Не вижу, честно говоря, никакого смысла в аннотационной магии, если ровно то же самое можно написать той же одной строчкой без усложнения логики
источник

V

Vabka in Kotlin JVM
Alexander Nozik
Не вижу, честно говоря, никакого смысла в аннотационной магии, если ровно то же самое можно написать той же одной строчкой без усложнения логики
Шоб уменьшить гуляния по файлам при написании логики
источник

V

Vabka in Kotlin JVM
А как зависимости инжектить?
источник

AN

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

B

Badya in Kotlin JVM
Vabka
Я про то что роутинг с контроллерами и аннотациями он же при запуске рефлексией формирует роутинг
Это походу не совсем ktor идеология, скорее jax-ws/spring
источник

AN

Alexander Nozik in Kotlin JVM
Все эти аннотации прилетели из дремучего прошлого аля Java 1.6, когда нельзя было функцию прокинуть, а надо было все в классы заворачивать и это было муторно
источник

V

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

V

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

V

Vabka in Kotlin JVM
этож бойлерплейт
источник

V

Vabka in Kotlin JVM
Либо я как-то не так выражаюсь, что вы меня понять не можете, либо для ктора какие-то странные практики применяются
источник

AO

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

AO

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

AN

Alexander Nozik in Kotlin JVM
Vabka
> При чем тут зависимости вообще?
Это уже второй вопрос. А как работать с IoC контейнером, когда ты роутишь не к некоторому классу, а к лямбде/функции?
Я думал это только в жавке контейнеры въедаются на уровне костного мозга. Они зачастую вообще не нужны, если роутинг функции в окружении имеют все, что нужно, а можно просто передавать параметром. В рефлективных вызовах не может быть параметров, потому что тогда можно нарушить негласный контракт. Но при человеческом-то вызове какие роблемы?

На самом деле даже спринг сейчас одумался и семимильными шагами идет к такому подходу
источник

AN

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

V

Vabka in Kotlin JVM
Alexey Otts
правилльный ответ - передать аргументом функции
Руками?
источник

V

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

На самом деле даже спринг сейчас одумался и семимильными шагами идет к такому подходу
Не понял
источник

V

Vabka in Kotlin JVM
Что за негласный контракт? Что за рефлективные вызовы?
источник

V

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

AN

Alexander Nozik in Kotlin JVM
Vabka
Что за негласный контракт? Что за рефлективные вызовы?
Как работают аннотации?
источник