Пустые поля Spring с автоматическим связыванием между сервером Tomcat и Tomcat запускаются программно - PullRequest
0 голосов
/ 01 апреля 2019
  1. Я запускаю весеннее веб-приложение с помощью класса org.apache.catalina.startup.Tomcat в моей IntelliJ IDE.
  2. Выполняю некоторую обработку среди служб с автоматической проводной связью.
  3. ВВ определенный момент все поля службы имеют нулевое значение.

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

 this.persist.doSomeProcess(); // NullPointerException

Но:

 this.getPersist().doSomeProcess(); // with public MyField getPersist() it works fine

Дело в том, что когда я запускаю свой проект на обычном Tomcat через IntelliJ, все работает нормально, и мне не нужны публичные геттеры.

ВерсияIntelliJ не имеет значения, как это имеет место с версии 8 месяцев назад.

Вот два разных стека вызовов, которые у меня есть (левый работает на реальном коте), правый поднимает NPE: The left one is the callstack that doesn't neet public getters and where fields are not null

У меня возникла эта проблема, поскольку я поместил аннотации @Transactional вместо программных вызовов с TransactionTemplate.

Мне действительно любопытно по этому поводу.

...