Распространение исключений в Spring Boot

Spring Boot так или иначе оборачивает / скрывает / инкапсулирует исключения?

Я получаю странное поведение при возникновении исключения. Например, в проекте Spring Boot + JPA, если я закомментирую аннотацию @Entity:

@Table(name = "XXX")
//@Entity
public class Contract
{
...
}

я получаю следующее исключение (предупреждение):

2018-12-10 19:09:33.153 DEBUG DESKTOP-48HHHCD --- [ost-startStop-1] o.h.c.CollectionSecondPass               : Second pass for collection: cp.dmo.bean.ContribuablePar.listeContratMensu
2018-12-10 19:09:33.153 DEBUG DESKTOP-48HHHCD --- [ost-startStop-1] o.h.c.a.CollectionBinder                 : Binding a collection of element: cp.dmo.bean.ContribuablePar.listeContratMensu
2018-12-10 19:09:33.154  WARN DESKTOP-48HHHCD --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testpopulationserviceso' defined in file [C:\Users\celfer\AppData\Local\Temp\1-dmo\WEB-INF\classes\conf\application\applicationContext-service.xml]: Cannot resolve reference to bean 'testpopulationserviceimpl' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testpopulationserviceimpl' defined in file [C:\Users\celfer\AppData\Local\Temp\1-dmo\WEB-INF\classes\conf\application\applicationContext-service.xml]: Cannot resolve reference to bean 'testpopulationdao' while setting bean property 'testpopulationdao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testpopulationdao' defined in file [C:\Users\celfer\AppData\Local\Temp\1-dmo\WEB-INF\classes\conf\application\applicationContext-dao.xml]: Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [jar:file:/C:/Users/celfer/AppData/Local/Temp/1-dmo/WEB-INF/lib/lombok-jpa-24.0.6-SNAPSHOT.jar!/conf/applicationContext-datasources-jpa2.xml]: Cannot resolve reference to bean 'entityManager' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManager' defined in URL [jar:file:/C:/Users/celfer/AppData/Local/Temp/1-dmo/WEB-INF/lib/lombok-jpa-24.0.6-SNAPSHOT.jar!/conf/applicationContext-datasources-jpa2.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
2018-12-10 19:09:33.155 DEBUG DESKTOP-48HHHCD --- [ost-  startStop-1] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'lecturepersonneso'

Таким образом, в исключении говорится, что приложение не может создать Hibernate SessionFactory, но не указывает точно, откуда возникла проблема.

Есть подсказка? Спасибо

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

Deedar Ali Brohi 18.12.2018 10:53

Что ж, он говорит вам, откуда взялась проблема: он не может создать сеанс Hibernate, поскольку ваш bean отсутствует: Ошибка при создании bean-компонента с именем testpopulationdao.

AlexB 18.12.2018 10:53

Вы говорите «Spring Boot», но похоже, что вы выполняете большую часть настройки вручную (и используете устаревший XML) вместо того, чтобы позволить Boot позаботиться об этом. Скорее всего, возникла проблема со сканированием устойчивых классов сущностей. Разместите всю трассировку стека и ваша конфигурация XML.

chrylis -cautiouslyoptimistic- 18.12.2018 10:54

@AlexB Ошибка, вероятно, возникает из самого Hibernate, когда он вообще не может найти какие-либо классы сущностей, но недостаточно информации, чтобы сказать наверняка.

chrylis -cautiouslyoptimistic- 18.12.2018 10:54

Согласен с советом @chrylis

AlexB 18.12.2018 10:56

Можете ли вы опубликовать pom.xml .. на высоком уровне, похоже, что зависимостей НЕ достаточно. Ошибка при создании bean-компонента с именем entityManager, определенным в URL [jar: file: / C: / Users / celfer / AppData / Local / Temp / 1-dmo / WEB-INF / ‌ lib / lombok-jpa-24.0.‌ 6-SNAPSHOT.jar! / Conf‌ / applicationContext-‌ datasources-jpa2.xml‌]:

Shiva 18.12.2018 11:11

Спасибо за помощь. Однако вопрос не в том, в чем проблема (аннотация @Entity отсутствует), вопрос в том, почему Spring не показывает дополнительную информацию об исключении Hibernate / JPA. В большинстве случаев, когда возникает ошибка сопоставления, мы получаем BeanCreationException с очень небольшим количеством дополнительной информации. Чтобы выяснить, где именно возникла ошибка, требуются часы, потому что Spring создает экземпляры компонентов Hibernate.

Celinio Fernandes 18.12.2018 11:45

Spring создает экземпляры компонентов Hibernate и перехватывает любое исключение Hibernate и повторно генерирует его как исключение создания bean-компонента, скрывая при этом настоящую причину. Как я могу зарегистрировать настоящую причину исключения?

Celinio Fernandes 18.12.2018 11:51

Причина в исключении, Spring ничего не скрывает. Если информации там нет, значит, информации больше нет. Вы можете попробовать запустить --debug, чтобы получить дополнительную информацию, но настоящая проблема заключается в том, что спящий режим больше не производит информации. Spring ничего не может с этим поделать.

M. Deinum 18.12.2018 13:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
9
401
0

Другие вопросы по теме