Рубрики
Без рубрики

Вести Журнал Ведения Журнала .. как вырубить лес с помощью Java CDI

Привет, мир! .извините, что пришлось это сделать. Добро пожаловать в мой первый dev.to пост, надеюсь, первый из многих! I… С пометкой java, новички, учебное пособие, качество кода.

.извините, что пришлось это сделать. Добро пожаловать в мой первый dev.to пост, надеюсь, первый из многих!

Я хотел начать с действительно простой утилиты, которую разработчики Java могут легко интегрировать в свой код и улучшить кодовую базу.

То, что я вижу очень часто, обычно в устаревших проектах, – это объявление регистратора для каждого класса.

1   public class MyClass {
2 
3       private static Logger logger = LoggerFactory.getLogger(MyClass.class);
4
5   ...
6   }

Реально это не будет очень ресурсоемким, но мы определенно можем внести улучшения для упрощения.

Введения.. ведение журнала с помощью CDI!

С помощью CDI мы можем внедрить регистратор SL4J (или вашу любимую реализацию).

Первое, что нам нужно сделать, это внедрить производителя журналов с использованием API Injection Point .

1   @ApplicationScoped
2   public class LoggerProducer {
3
4      @Produces
5      public Logger getLogger(final InjectionPoint ip) {
6          return LoggerFactory.getLogger(ip.getMember().getDeclaringClass());
6      }
7   }

Мы указываем область действия класса как @ApplicationScoped . API точки внедрения позволяет нам узнать объявляющий класс внедренного регистратора.

Импорт:

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Примечание: Убедитесь, что правильный @Производит аннотация импортируется, а не производитель JAX-RS

Следующий шаг – просто @@Вводим наш регистратор в наш класс и начинаем регистрироваться.

1   @ApplicationScoped
2   public class MyClass {
3 
4       @Inject
5       private Logger logger;
6       
7       public void myMethod(){
8          logger.info("My log!");
9       }
10   }

Вот он у нас есть, простой регистратор CDI.

Существуют и другие реализации, такие как Lombok logger . Однако есть несколько шагов, чтобы сделать Ломбок совместимым с вашей ИДЕЕЙ и я считаю, что регистратор CDI проще интегрировать с существующей кодовой базой.

Оригинал: “https://dev.to/azaidi93/log-log-log-how-to-deforest-with-java-cdi-3361”