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, но не указывает точно, откуда возникла проблема.
Есть подсказка? Спасибо
Что ж, он говорит вам, откуда взялась проблема: он не может создать сеанс Hibernate, поскольку ваш bean отсутствует: Ошибка при создании bean-компонента с именем testpopulationdao.
Вы говорите «Spring Boot», но похоже, что вы выполняете большую часть настройки вручную (и используете устаревший XML) вместо того, чтобы позволить Boot позаботиться об этом. Скорее всего, возникла проблема со сканированием устойчивых классов сущностей. Разместите всю трассировку стека и ваша конфигурация XML.
@AlexB Ошибка, вероятно, возникает из самого Hibernate, когда он вообще не может найти какие-либо классы сущностей, но недостаточно информации, чтобы сказать наверняка.
Согласен с советом @chrylis
Можете ли вы опубликовать 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]:
Спасибо за помощь. Однако вопрос не в том, в чем проблема (аннотация @Entity отсутствует), вопрос в том, почему Spring не показывает дополнительную информацию об исключении Hibernate / JPA. В большинстве случаев, когда возникает ошибка сопоставления, мы получаем BeanCreationException с очень небольшим количеством дополнительной информации. Чтобы выяснить, где именно возникла ошибка, требуются часы, потому что Spring создает экземпляры компонентов Hibernate.
Spring создает экземпляры компонентов Hibernate и перехватывает любое исключение Hibernate и повторно генерирует его как исключение создания bean-компонента, скрывая при этом настоящую причину. Как я могу зарегистрировать настоящую причину исключения?
Причина в исключении, Spring ничего не скрывает. Если информации там нет, значит, информации больше нет. Вы можете попробовать запустить --debug
, чтобы получить дополнительную информацию, но настоящая проблема заключается в том, что спящий режим больше не производит информации. Spring ничего не может с этим поделать.
есть исключение зависимости, пожалуйста, поделитесь своим кодом, чтобы мы могли легко его отследить.