Size: a a a

2020 July 10

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Сессия и есть реквест скоуп
эм, нет, с чего бы?
источник

AE

Alexandr Emelyanov in Kotlin JVM
если не городить полный stateless конечно же
источник

AE

Alexandr Emelyanov in Kotlin JVM
но тогда логичнее session выкинуть, чем request
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ну потому что сессия привязывается к запросам
источник

RI

Ruslan Ibragimov in Kotlin JVM
Если ты ее инжектишь, то она инжектится на уровне запроса
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Ну по умолчанию когда Bean метод в конфигурации, он разве не синглтон? Там даже прокси и его можно вызывать в конфигурации несколько раз и он будет кешировать результат
да, но можно объявить и другой скоуп
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Ну потому что сессия привязывается к запросам
но при этом сессия шире одного запроса и может включать несколько
источник

RI

Ruslan Ibragimov in Kotlin JVM
В общем я не понимаю зачем это иметь в DI библиотеке
источник

RI

Ruslan Ibragimov in Kotlin JVM
Если вам зачем-то хочется чтобы http сервер создавал объекты на запрос - пусть он и создает
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Если вам зачем-то хочется чтобы http сервер создавал объекты на запрос - пусть он и создает
но при этом если они бины - то их можно и инжектить
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ну это означает что на каждый запрос будет создаваться дерево объектов
источник

RI

Ruslan Ibragimov in Kotlin JVM
Вместо того чтобы вятягивать нужное из coroutineContext, ThreadLocal или передавать явно
источник

AE

Alexandr Emelyanov in Kotlin JVM
так скоуп по факту и будет жить в coroutineContext или TL, просто к нему будет удобное и привычное АПИ
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Ну это означает что на каждый запрос будет создаваться дерево объектов
они итак создаются
источник

RI

Ruslan Ibragimov in Kotlin JVM
Alexandr Emelyanov
они итак создаются
Controller в том же спринге может быть синглтоном, пока какой-нибудь ресурс с RequestScope не захочется заинжектить внутрь, и тогда он должен создаваться на каждый реквест (хотя можно было написать так, чтобы не создавался). И так может целое дерево всего создаваться, хотя могло быть просто синглтонами.

Я кстати так никогда не писал, но уверен что контоллер будет пересоздаваться (если только там каких прокси не накрутили)
источник

RI

Ruslan Ibragimov in Kotlin JVM
@Bean
@RequestScope
open requestScopedBean() = HelloMessageGenerator()


@Controller
open class ScopesController {
   @Resource(name = "requestScopedBean")
   private lateinit var requestScopedBean: HelloMessageGenerator
}
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Controller в том же спринге может быть синглтоном, пока какой-нибудь ресурс с RequestScope не захочется заинжектить внутрь, и тогда он должен создаваться на каждый реквест (хотя можно было написать так, чтобы не создавался). И так может целое дерево всего создаваться, хотя могло быть просто синглтонами.

Я кстати так никогда не писал, но уверен что контоллер будет пересоздаваться (если только там каких прокси не накрутили)
нет, контроллер не будет пересоздаваться, в него проинжектится прокси и все
источник

AE

Alexandr Emelyanov in Kotlin JVM
синглтоны останутся все на месте
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
@Bean
@RequestScope
open requestScopedBean() = HelloMessageGenerator()


@Controller
open class ScopesController {
   @Resource(name = "requestScopedBean")
   private lateinit var requestScopedBean: HelloMessageGenerator
}
грязный код)
источник

RI

Ruslan Ibragimov in Kotlin JVM
Я взял первый попавшийся из интернетов
источник