Разница между использованием lombok против Inject для конструктора - PullRequest
0 голосов
/ 24 октября 2018

Два метода для внедрения в конструктор:

@Slf4j
@Component
@RequiredArgsConstructor (onConstructor = @_(@Inject))
public ClassA {
   @NonNull private ClassB b;
}

Другой метод использует Inject:

@Slf4j
@Component
public class ClassA {
   private final ClassB b;
   @Inject
   public ClassA(ClassB b) {
      this.b = b;
   }
}

Хотите узнать разницу?

1 Ответ

0 голосов
/ 24 октября 2018

Да, в последнем коде намного больше :).Lombok выполняет некоторые магические на этапе компиляции, и, возможно, байт-код этих двух немного отличается, но результат байт-кода должен быть почти таким же, а функциональность и - точно такой же.

Изобласть действия: обратите внимание, что - в зависимости от случая - может быть еще более понятно ввести поле непосредственно:

@Inject
private final ClassB b;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...