Pull to refresh

Comments 9

Похвала за проведённое исследование. Хотелось бы внести пару ясностей. В статье заявлен Spring Framework, но статья описывает исследование Spring Boot Framework, что является некой обёрткой для Спринга. Принцип один, но построение контекста отличается. Ну и в статье я бы сказал, что скорее описано построение контекста. Далее заявляется внедрение кастомной логики в жизнный цикл, это сама по себе плохая затея, правильнее было бы задуматься как решить поставленную задачу в рамках возможности стандартных методов и подходов фреймворка, т.к. дальнейшее обновление может сломать вашу программу. Также другой программист, который столкнётся с вашей кастомной логикой может очень долго плеваться и не понимать, что происходит. В принципе фреймворки для этого и придуманы, чтоб ускорить и упорядочить разработку типовых задач. Для лучшего понимания особенно для новичков было бы не плохо описать поведение Сервисов, Контроллеров, Репозиториев, Использование Хибернейт, Использование больше, чем одной DB одновременно, как себя ведут Транзакции, Прокси объекты, Аспекты и т.д. поле не паханное ;-)

Вам стоит почитать, что такое Spring Boot вообще, ибо понимание нулевое.

Спасибо большое) Вы, кстати, тоже затронули интересную тему, которую я захотел раскрыть чуть подробнее.

Я реализовал еще один тестовый стэнд, который ответил бы на вопросы:

Есть ли отличие в жизненных цыклах Spring Framework между версиями?

В версии 1.2.9 статический блок инициализации вызывается в самом начале.
Это отличается от версии 2.5.6 и более поздних версий, поскольку статический блок инициализации вызывается после BeanFactoryPostProcessor и BeanPostProcessor.

Методы уничтожения BeanFactoryPostProcessor и BeanPostProcessor вызываются перед методами уничтожения бинов.

Это самая большая разница между версиями. Более поздние версии просто добавили новые инструменты интеграции.

Я также заметил, что методы обратного вызова инициализации и уничтожения вызываются для BeanFactoryPostProcessor, хотя он не был в конфигурации на основе аннотаций. Это основное отличие между конфигурациями на основе XML и аннотаций.

Есть ли отличия в жизненных цыклах Spring Framework и Spring Boot?

Ответ: нет, так как Spring Boot внутри себя использует тотже Spring Framework.

Стоит ли бояться изменений жизненного цикла в будущих версиях?

Можно не бояться использовать средства интеграции Spring, так как порядок жизненного цикла скорее всего не изменится в последующих версиях.

Также можно заметить, что в целом разработчики фреймворка только добавляют новые инструменты, а не изменяют старые, чтобы сохранить обратную совместимость и не создавать дополнительные боли при переходе на новую версию фреймворка.

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

Более подробно вы можете прочитать перейдя по ссылке.

исправьте пожалуйста слово цикл..

Интересная тема затронута, но такое ощущение что писал ее ChatGPT

Не буду настаивать на том, что бы вы поверили, что это я написал на основе своих заметок в Obsidian. В я даже могу понять почему у вас может складываться такое впечатление. Я старался все показать и объяснить достаточно кратко и емко. И я думаю, что ChatGPT придерживаеться такомуже принципу.

Мне главное, что бы статья была полезная для сообщества программистов, а все остальное не важно)

Спасибо, что уделили время!

Отличная шпаргалка по фреймворку! Добавил в закладки.

В "Этап уничтожения bean-компонента" опечатка: вместо @PreDestroy указано @PostConstruct

Да, вы правы. Большое спасибо за подсказку! Я исправил это)

Sign up to leave a comment.

Articles

Change theme settings