Когда вы используете @PostConstruct
для реализации логики c, приложение еще не готово, поэтому оно как бы противоречит вашим требованиям. Spring инициализирует компоненты один за другим (с учетом зависимостей между ними.
В конце концов, он создает контекст приложения.
Когда контекст приложения полностью инициализирован, Spring действительно позволяет слушателям таким образом, слушатели - это способ go - когда вызывается слушатель, приложение готово.
В обоих случаях (PostConstruct, EventListener), если вы не используете блок try / catch контекст приложения потерпит неудачу, потому что он ждет, пока все слушатели будут выполнены.
Вы можете использовать @Async
, если не хотите, чтобы контекст приложения ожидал выполнения слушателей. В этом случае обработка исключений будет выполнено исполнителем задачи. См. здесь
Лично я не вижу проблем с try/catch
подходом