Заявление об ограничении ответственности: этот вопрос не предназначен для «основанного на мнении». Я ищу сильные плюсы и минусы.
В приложении CDI более обычным и подходящим для использования является статический регистратор:
private static final Logger LOGGER = LoggerFactory.getLogger...;
или залить это имея конкретного производителя?
@Inject
private Logger logger;
Преимущество первого заключается в том, что мы можем создать нашу собственную оболочку LoggerFactory (для некоторых целей) и использовать ее везде, не заботясь о том, что кто-то злоупотребил другой фабрикой. Но есть ли у этого подхода другие недостатки / преимущества? Что более «канонично»?
@chrylis Это не будет синглтон, поскольку можно разработать производителя так, чтобы он уважал имя класса, взятое из точки внедрения.
предотвратить неправильное использование другого завода, как вы сказали. он создает единую точку для обеспечения соблюдения нашей политики, уменьшает шаблонный код. он включает в себя все преимущества инъекций
«он будет уважать имя класса, взятое из точки внедрения» может означать, что вы создаете какой-то фреймворк-код. Интерпретация точки инъекции - это то, что делается не всегда. Таким образом, вы должны знать, что у вас может быть дополнительная зависимость от частного кода фреймворка.




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