CDI: статические логгеры против инъекции?

Заявление об ограничении ответственности: этот вопрос не предназначен для «основанного на мнении». Я ищу сильные плюсы и минусы.

В приложении CDI более обычным и подходящим для использования является статический регистратор: private static final Logger LOGGER = LoggerFactory.getLogger...;

или залить это имея конкретного производителя? @Inject private Logger logger;

Преимущество первого заключается в том, что мы можем создать нашу собственную оболочку LoggerFactory (для некоторых целей) и использовать ее везде, не заботясь о том, что кто-то злоупотребил другой фабрикой. Но есть ли у этого подхода другие недостатки / преимущества? Что более «канонично»?

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

chrylis -cautiouslyoptimistic- 23.10.2018 17:37

@chrylis Это не будет синглтон, поскольку можно разработать производителя так, чтобы он уважал имя класса, взятое из точки внедрения.

Andremoniy 23.10.2018 18:06

предотвратить неправильное использование другого завода, как вы сказали. он создает единую точку для обеспечения соблюдения нашей политики, уменьшает шаблонный код. он включает в себя все преимущества инъекций

Mehran Mastcheshmi 24.10.2018 07:29

«он будет уважать имя класса, взятое из точки внедрения» может означать, что вы создаете какой-то фреймворк-код. Интерпретация точки инъекции - это то, что делается не всегда. Таким образом, вы должны знать, что у вас может быть дополнительная зависимость от частного кода фреймворка.

aschoerk 25.10.2018 11:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
4
247
0

Другие вопросы по теме