Spring-потрошитель: жизненный цикл Spring Framework
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.
Я решил изучить эту тему так как официальная документация достаточно разбросано отвечает на этот вопрос. В итоге я разработал небольшой тестовый стенд. Для тестирования я использовал специальные интерфейсы интеграции и аннотации которые позволяют расширить контейнер Spring-а, которые позволяют внедрить кастомную логику в его жизненный цикл. Я выбрал эти инструменты, так как там обычно и возникают проблемы. Я считаю, что это необходимо знать, чтобы избежать проблем на стадии разработки, отладки и тестирования.
К слову в этой статье не обсуждается почему жизненный цикл такой, какой он есть. Здесь я хочу вам показать результаты моих исследований и выводы. Также здесь не рассматриваются нюансы жизненного цикла иерархических контекстов.
Далее - https://habr.com/ru/articles/720794/
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.
Я решил изучить эту тему так как официальная документация достаточно разбросано отвечает на этот вопрос. В итоге я разработал небольшой тестовый стенд. Для тестирования я использовал специальные интерфейсы интеграции и аннотации которые позволяют расширить контейнер Spring-а, которые позволяют внедрить кастомную логику в его жизненный цикл. Я выбрал эти инструменты, так как там обычно и возникают проблемы. Я считаю, что это необходимо знать, чтобы избежать проблем на стадии разработки, отладки и тестирования.
К слову в этой статье не обсуждается почему жизненный цикл такой, какой он есть. Здесь я хочу вам показать результаты моих исследований и выводы. Также здесь не рассматриваются нюансы жизненного цикла иерархических контекстов.
Далее - https://habr.com/ru/articles/720794/
Зачем писать тесты на Spring Repository?
(Тут именно не как их писать, а рассуждение на тему "Зачем?")
https://youtu.be/M1mSrdOzMX8
(Тут именно не как их писать, а рассуждение на тему "Зачем?")
https://youtu.be/M1mSrdOzMX8
Apache Tika: Самое точное определение mime-типа файл, даже если расширение изменено.
Столкнулся с проблемой когда необходимо было по куче файлов с расширением .bin определить тип каждого и раскидать их по реальным типам по соответствующим папкам и восстановить расширение.
В моём случае расширение bin это результат работы некого приложения, которое таким образом скрывает реальное имя файла и его расширение.
В общем была папка с файлами типа {GUID}.bin. Я знал, что это там в основном файлы с типами PDF | DOCX | XLSX и картинки.
Далее - https://antowka.ru/apache-tika/
Столкнулся с проблемой когда необходимо было по куче файлов с расширением .bin определить тип каждого и раскидать их по реальным типам по соответствующим папкам и восстановить расширение.
В моём случае расширение bin это результат работы некого приложения, которое таким образом скрывает реальное имя файла и его расширение.
В общем была папка с файлами типа {GUID}.bin. Я знал, что это там в основном файлы с типами PDF | DOCX | XLSX и картинки.
Далее - https://antowka.ru/apache-tika/
Как программно сделать вызов метода через JMX.
В этой статье я не буду рассказывать как создать MBean, чтобы вызывать его методы через JMX. Это больше заметка для себя и других, кому может понадобиться из приложения вызвать метод удалённо в другом Java-приложении.
Далее - https://antowka.ru/jmx-invoke-operation-programmatically/
В этой статье я не буду рассказывать как создать MBean, чтобы вызывать его методы через JMX. Это больше заметка для себя и других, кому может понадобиться из приложения вызвать метод удалённо в другом Java-приложении.
Далее - https://antowka.ru/jmx-invoke-operation-programmatically/
Virtualbox: перенос (экспорт) VM на другой хост
Не Docker-ом единым 🙂 Многие из нас сталкиваются с необходимостью
переноса виртуальной машины под Virtualbox на другой хост (комп, сервер…).
Пишу краткую инструкцию, чтоб всегда была под рукой.
https://antowka.ru/virtualbox-export-ova-import/
Не Docker-ом единым 🙂 Многие из нас сталкиваются с необходимостью
переноса виртуальной машины под Virtualbox на другой хост (комп, сервер…).
Пишу краткую инструкцию, чтоб всегда была под рукой.
https://antowka.ru/virtualbox-export-ova-import/
GlowRoot — как искать «бутылочное горлышко» в Java приложении.
Приложение для поиска в исследуемом приложении так называемых "бутылочных горлышек" т.е. тех мест, которые замедляют работу приложения и\или приводят к повышенному потреблению ресурсов. И всё это может работать в режиме non-stop с возможностью, просмотра исторических данных. Ну просто очень полезная штука - всем рекомендую!
Вот пару статей про этот инструмент
- https://antowka.ru/glowroot-optimization-java-app/
- https://habr.com/ru/companies/exness/articles/555712/
#java #glowroot #profiler
Приложение для поиска в исследуемом приложении так называемых "бутылочных горлышек" т.е. тех мест, которые замедляют работу приложения и\или приводят к повышенному потреблению ресурсов. И всё это может работать в режиме non-stop с возможностью, просмотра исторических данных. Ну просто очень полезная штука - всем рекомендую!
Вот пару статей про этот инструмент
- https://antowka.ru/glowroot-optimization-java-app/
- https://habr.com/ru/companies/exness/articles/555712/
#java #glowroot #profiler
Spring boot и GraphQL
Spring Boot является приложением Java, которое предоставляет среду для легкого старта приложений. Он предоставляет образец приложения, что позволяет разработчику получить доступ к различным сервисам и компонентам. GraphQL, с другой стороны, является запросным языком, который позволяет получать данные с сервера. Вы можете использовать GraphQL, чтобы получить точно то, что вам нужно и избежать лишних данных.
Spring Boot и GraphQL являются отличными инструментами, которые можно использовать вместе для построения мощных веб-приложений. Вы можете использовать эти инструменты для быстрого развертывания идей и развития архитектуры.
Полная статья на Хабре - https://habr.com/ru/articles/720360/
#java #spring #graphql
Spring Boot является приложением Java, которое предоставляет среду для легкого старта приложений. Он предоставляет образец приложения, что позволяет разработчику получить доступ к различным сервисам и компонентам. GraphQL, с другой стороны, является запросным языком, который позволяет получать данные с сервера. Вы можете использовать GraphQL, чтобы получить точно то, что вам нужно и избежать лишних данных.
Spring Boot и GraphQL являются отличными инструментами, которые можно использовать вместе для построения мощных веб-приложений. Вы можете использовать эти инструменты для быстрого развертывания идей и развития архитектуры.
Полная статья на Хабре - https://habr.com/ru/articles/720360/
#java #spring #graphql