- Я запускаю весеннее веб-приложение с помощью класса org.apache.catalina.startup.Tomcat в моей IntelliJ IDE.
- Выполняю некоторую обработку среди служб с автоматической проводной связью.
- ВВ определенный момент все поля службы имеют нулевое значение.
Я могу обойти эту проблему, используя публичные методы получения этих полей в классе, но мне интересно, почему.
this.persist.doSomeProcess(); // NullPointerException
Но:
this.getPersist().doSomeProcess(); // with public MyField getPersist() it works fine
Дело в том, что когда я запускаю свой проект на обычном Tomcat через IntelliJ, все работает нормально, и мне не нужны публичные геттеры.
ВерсияIntelliJ не имеет значения, как это имеет место с версии 8 месяцев назад.
Вот два разных стека вызовов, которые у меня есть (левый работает на реальном коте), правый поднимает NPE:
У меня возникла эта проблема, поскольку я поместил аннотации @Transactional вместо программных вызовов с TransactionTemplate.
Мне действительно любопытно по этому поводу.