Приложение My Spring Boot 2.2.6 использует Orika для сопоставления DTO между слоями (JPA Entity репозитория для просмотра POJO). Он использует встроенный Tomcat и JSP в качестве технологии просмотра.
Когда Орика сопоставляет один компонент с другим, в первый раз это занимает около 15 секунд. Отлаживая исходный код, я сузил проблему до вызова Introspector.getBeanInfo(class)
.
Я сократил проблему до следующего:
@Override
public Collection<MyDto> getAll() {
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo(MyEntity.class);
} catch (IntrospectionException | ClassNotFoundException e) {
e.printStackTrace();
}
return Collections.emptyList();
}
Этот простой оператор внутри блока try catch также требует long на первый запрос, но учтите:
- В моем ноутбуке он работает плавно, без каких-либо задержек
- Когда я запускаю его в Kubernetes как контейнер с JDK11, он берет это long.
Есть какие-нибудь объяснения и советы, как это исправить?