Должен ли я использовать CDI javax.inject.Singleton для bean-компонентов, которые не нуждаются в сериализации, прокси или декорациях - PullRequest
0 голосов
/ 02 февраля 2019

Я понимаю, как ApplicationScoped и CDI javax.inject.Singleton работают, и я понимаю разницу между этими двумя областями .В моем приложении много компонентов, которые не нуждаются в сериализации, прокси или декорациях, поэтому я планирую переключить их с ApplicationScoped (что работает) на javax.inject.Singleton для повышения производительности за счет исключения прокси.

У меня вопрос : Должен ли я на самом деле внести такое изменение?

1 Ответ

0 голосов
/ 03 февраля 2019

Конечно, вы можете сделать этот рефакторинг для аннотации области, но вам нужно будет позаботиться о сериализации на bean-компонентах, вызывающих эти singleton-управляемые bean-компоненты.См. http://docs.jboss.org/weld/reference/latest-2.2/en-US/html_single/#_the_singleton_pseudo_scope

Сначала я бы выяснил, сколько выигрыша в производительности я получу от этого шага, и если оно действительно стоит времени, мне нужно в него инвестировать.Обычно узкое место в производительности возникает из-за производительности запросов / индексации базы данных, ввода-вывода, сети, блокировок потоков, неэффективных алгоритмов (и других) перед издержками прокси-сервера Java, поэтому я придерживаюсь стандартного @ ApplicationScoped.

См.http://ordinaryjava.blogspot.com/2008/08/benchmarking-cost-of-dynamic-proxies.html https://spring.io/blog/2007/07/19/debunking-myths-proxies-impact-performance/

...