@ Inject on no-args publi c метод - PullRequest
       4

@ Inject on no-args publi c метод

0 голосов
/ 04 февраля 2020

При просмотре некоторого кода я заметил POJO (без контекста -> @Dependant), который внедряется (@Inject) в другой бин и который вводит бин (поле). Но он также имеет аннотацию @Inject для метода no-args publi c, который выполняет инициализацию. Я думал, что точки внедрения происходят только в поле, конструкторе и установщике

public class MyImpl implements MyInterface {

  @Inject
  private ParamDao paramDao;

  private Map<String,List<MyRateDto>> params;


  @Inject
  public void loadRates() {
    params = paramDao....;
  }
...
}

Мне этот метод (loadRates) должен был быть аннотирован как @PostConstruct. Но мне было интересно, что произойдет в таком случае?

Полагаю, этот метод просто вызывается после создания бина и внедрения поля ... Но я ничего не читал об этом в spe c или где-либо еще. Это ожидаемое поведение?

Среда: Java 8 / JavaEE 7, предназначенная для JBoss EAP 7.

Спасибо

1 Ответ

2 голосов
/ 06 февраля 2020

Благодаря @Andreas меня направили в правильном направлении.

Глядя на Javado c из @Inject: « Сначала вводятся конструкторы, затем поля, а затем методы . Поля и методы в суперклассах вводятся раньше, чем в подклассах. Порядок внедрения среди полей и методов одного и того же класса не указан. --- Методы инъекции [...] принимают ноль или более зависимостей в качестве аргументов."

Итак, явного описания для нулевых аргументов не существует. Но просто @Inject методы вызываются в произвольном порядке, и аргументы разрешаются.
Нет аргумента = ничего не разрешается.

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