Недавно вышел Spring Framework 6.2, который включил в себя множество улучшений и новых возможностей. К одним из них можно отнести переопределение бинов в тестах.
В новом переводе от команды Spring АйО вы узнаете как можно использовать
@TestBean
, @MockitoBean
и @MockitoSpyBean
для переопределения бинов в тестах.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859430/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍9❤3
На конференции IT Community Day выступили два наших эксперта из сообщества Spring АйО с докладами.
🎤 Михаил Поливаха представил доклад "Spring-AI с Gigachat. Интегрируем LLM в ваше приложение безболезненно", в котором рассказал о том, как внедрить мощные языковые модели в проекты на Spring и получить максимум пользы с минимальными трудностями.
🎤 Павел Кислов выступил с докладом "Spring Security ACL. Концепции гранулированного доступа в технологиях Java и почем фунт лиха", где раскрыл сложные, но важные аспекты настройки тонкого доступа в Spring Security ACL.
Мы подготовили видео-записи этих выступлений, чтобы вы могли детально познакомиться с темами:
- Выступление Михаила Поливахи
- Выступление Павла Кислова
- Выступление Михаила Поливахи
- Выступление Павла Кислова
- Выступление Михаила Поливахи
- Выступление Павла Кислова
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥10❤3
🔄 Версионирование эндпоинтов — это просто
Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium.
В докладе автор объясняет, зачем нужно версионировать API, и подробно сравнивает различные подходы к реализации этой задачи.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859910/
Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium.
В докладе автор объясняет, зачем нужно версионировать API, и подробно сравнивает различные подходы к реализации этой задачи.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859910/
👍27🔥11❤4
Отвечает эксперт сообщества Spring АйО – Михаил Поливаха.
–––
Вопрос действительно интересный, и хотя такая возможность могла бы быть полезной, здесь есть свои нюансы и подводные камни. Давайте разберёмся, какие именно.
Начнём с того, что native query — это запросы, написанные на чистом SQL. В Hibernate их часто используют, когда возможностей HQL/JPQL недостаточно или когда нужны специфичные фичи для конкретной СУБД. Однако ни один ORM-фреймворк (будь то Spring Data JDBC, Hibernate или любой другой) не может на 100% знать структуру вашего нативного запроса — он может лишь предполагать. В таком запросе может быть что угодно, и ORM-фреймворк не всегда сможет корректно с ним работать.
Теперь представьте ситуацию: у нас есть Spring Data JPA native query для PostgreSQL и следующий набор тестов:
@Query(
value = "SELECT * FROM users FOR UPDATE SKIP LOCKED;",
nativeQuery = true
)
List<User> findBySomething(String name, Pageable pageable);
@Test
void testWithoutSort() {
userRepository.findBySomething("another", PageRequest.of(1, 10));
}
@Test
void testWithSort() {
userRepository.findBySomething("another", PageRequest.of(1, 10, Sort.by("name")));
}
Первый тест пройдёт успешно, а второй — нет. Почему?
В итоге вставлять сортировку в native запрос приходится Spring Data JPA, и ей в буквальном смысле надо угадывать, куда же в запросе поставить
ORDER BY
. Да, Spring Data JPA может модифицировать ваши native query (существует даже API, позволяющий делать это динамически). Как вы можете догадаться, в данном случае Spring Data JPA не угадает с позиционированием.Вот пример SQL, который будет сгенерирован в упавшем тесте
SELECT
*
FROM
users
OFFSET
? ROWS
FETCH NEXT ? ROWS ONLY FOR UPDATE SKIP LOCKED;
ORDER BY
FOR.name ASC -- НЕПРАВИЛЬНО! ORDER BY ЗДЕСЬ БЫТЬ НЕ ДОЛЖНО!
Проблема заключается в том, что Spring Data JPA вставляет
ORDER BY
в неподходящее место, что и приводит к ошибке. С нативными запросами ORM-фреймворки, такие как Spring Data JPA и Hibernate, вынуждены догадываться, куда вставить
OFFSET
, LIMIT
и ORDER BY
. Чаще всего они угадывают верно, так как эти конструкции обычно находятся в конце запроса, но бывают исключения.Таким образом, поддержка пагинации для нативных запросов — действительно полезная функция, но нужно понимать, что её реализация может привести к множеству багов, связанных с неверным определением позиции для
OFFSET
, LIMIT
и ORDER BY
.Тем не менее, мне кажется, что эта фича стоит того, чтобы её внедрить! Делитесь своим мнением в комментариях, буду рад обсудить!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤10🔥7
Совсем недавно вышла IntelliJ IDEA 2024.3 – последний мажорный релиз IDE в этом году. И одним из самых важных нововведений этой версии стала улучшенная панель Structure.
Команда Spring АйО перевела статью Siva Katamreddy (Developer Advocate в JetBrains), в которой Siva рассказывает, как улучшенная панель помогает решать задачи, и делится историей создания этой функциональности.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/860510/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍10❤5⚡2
Уже через неделю 3 эксперта сообщества Spring АйО примут участие в Java Rock Stars Meetup!
Михаил Поливаха выступит с докладом "Spring Data JPA. Все сложнее, чем кажется"
В повседневной разработке enterprise-приложений при работе с базой данных доминирует JPA. В частности, как правило, люди используют Spring Data JPA. Хоть и этот фреймворк используется довольно активно, многие не понимают как именно Spring Data JPA работает с Hibernate: как Spring Data JPA менеджит сессии, как в одном приложении уживаются транзакции JPA-спецификации и транзакции самого Spring?
Павел Кислов выступит с докладом "Spring Security, как дела?"
Для многих spring security застыл в состоянии, в котором он был до момента выхода spring boot 3 и до spring security 6.0. Даже с этого момента произошло немало событий в жизни security-части фреймворка: вышел новый authorization server, в oauth2 добавили поддержку rest client, поменялось архитектурное видение разработчиков фреймворка и еще много всего. Это ли не повод синхронизировать головы и актуализировать понимание? Этим и займемся.
А Рустам Курамшин станет ведущим этого мероприятия.
Участие абсолютно бесплатное, главное успеть зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍12❤5
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Spring Framework 6.2.0: переопределение бинов в тестах
– Spring АйО на IT Community Day
– Версионирование эндпоинтов — это просто
– #ВопросЭксперту: почему в Spring Data JDBC отсутствует пагинация для native query?
– От кода к смыслу: улучшенная панель Structure в IntelliJ IDEA 2024.3
– Java Rock Stars Meetup
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10🔥7👍6❤1
Недавно состоялся релиз Spring Framework 6.2, вслед за ним последовал релиз Spring Boot 3.4.
Команда Spring АйО подготовила перевод статьи Josh Long об основных изменениях и улучшениях, которые вошли в последний релиз.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/861182/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7⚡6
Forwarded from Amplicode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6😁4❤3⚡1👎1🤔1
🌟Что нового в Spring Framework 6.2, Spring Boot 3.4 и каковы планы на будущее?
Команда Spring АйО перевела статью InfoQ, посвящённую новым версиям Spring Framework и Spring Boot.
В статье обсуждаются улучшения последних релизов, анонс следующего поколения Spring, запланированного на 2025 год, а также ответы на вопросы редакции InfoQ от руководителя проекта Spring Framework Юргена Хёллера и контрибьютера Spring Framework core Себастьяна Делюза.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/861782/
Команда Spring АйО перевела статью InfoQ, посвящённую новым версиям Spring Framework и Spring Boot.
В статье обсуждаются улучшения последних релизов, анонс следующего поколения Spring, запланированного на 2025 год, а также ответы на вопросы редакции InfoQ от руководителя проекта Spring Framework Юргена Хёллера и контрибьютера Spring Framework core Себастьяна Делюза.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/861782/
🔥18👍9❤6⚡2
Команда Spring АйО перевела статью об улучшениях Spring Security 6.4.1 в новом релизе.
В новой версии поддержаны современные методы аутентификации, такие как Passkeys и одноразовые OTTs токены. Josh Long называет этот релиз doozie - что-то сильно потрясающее. Действительно ли это так?
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/862400/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥11❤6
Какую СУБД используете в продакшене?
Anonymous Poll
87%
PostgreSQL (или какой-то форк)
6%
MySQL (MariaDB)
4%
Microsoft SQL Server
13%
Oracle Database
11%
MongoDB
3%
Apache Cassandra
9%
ClickHouse
3%
Другую, напишу в комментариях
👍12🔥7🤔4
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Что нового в Spring Boot 3.4
– Что нового в Spring Framework 6.2, Spring Boot 3.4 и каковы планы на будущее?
– Что нового в Spring Boot 3.4: Spring Security
– Опрос "Какую СУБД используете в продакшене?"
– Создаём CRUD REST API в Spring Boot быстро и просто вместе с Amplicode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
🌐 Как жить без IntelliJ IDEA? Часть 3 — HTTP Client
В предыдущей статье "Как жить без IntelliJ IDEA" мы разбирали, какие есть альтернативы Ultimate в части поддержки Spring.
В этой части команда Spring АйО исследует, чем можно заменить встроенный HTTP-клиент JetBrains, за что его так любят разработчики и какие инструменты могут стать достойной альтернативой.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/863106/
В предыдущей статье "Как жить без IntelliJ IDEA" мы разбирали, какие есть альтернативы Ultimate в части поддержки Spring.
В этой части команда Spring АйО исследует, чем можно заменить встроенный HTTP-клиент JetBrains, за что его так любят разработчики и какие инструменты могут стать достойной альтернативой.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/863106/
🔥21👍12❤6🤔2
Forwarded from Amplicode
А для тех, кто больше любит смотреть, а не читать – подготовили обзор последних новинок из мира инструментов для разработчиков в видео-формате.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😁10❤6👍6👎3
Исследователи из Oracle и Уппсальского университета представила новый алгоритм сборки мусора — Mark–Scavenge. Он решает проблему избыточной работы, которая возникает при использовании доступности объекта как прокси для оценки его "живучести".
Команда Spring АйО перевела статью, в которой можно подробнее ознакомиться с подробностями работы нового алгоритма.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/863830/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5❤3⚡1🤯1
Отвечает эксперт сообщества Spring АйО – Павел Кислов.
–––
Spring Authorization Server - это инструмент, который при прочих равных может быть потенциально гибче. Можно дописать свою логику любую и он будет вести себя так, как вы захотите. Его можно адаптировать под нужды вашей экосистемы и научить делать все необходимые вам "финты". Кроме того, для Spring-разработчика он может быть потенциально понятнее. Если что-то идет не так, можно открыть исходники вашего проекта и подебажить, воспроизведя уязвимость в "карманном варианте", например. Работа с хранилищем данных настраивается и дописывается. И это огромный плюс. Вот нет у вас вездесущего PostgreSQL. или нужна нереляционная база. По "исторически сложившимся" причинам, например. Вы можете написать свою имплементацию для нужного сервиса работы с данными и подключить любой источник данных. В Keycloak или Okta мы были бы ограничены.
Еще одним важным аспектом является потенциальная "лицензия" и коммерческая часть. Выбирая опенсорс решение вроде Keycloak, вы часто остаетесь между двух огней. С одной стороны нет возможности досконально изучить исходники того же Keycloak, хоть он и написан на Java. В него бы пришлось сильно погрузиться и прочитать большое количество исходников, чтобы реализовать свою хотелку, кроме того пришлось бы читать еще и исходники подтянутых им maven-зависимостей. Задача не из легких. С другой стороны он уже готовый этот Keycloak. Разверул и поехали. И в то же время, чтобы понять, как сделать нестандартный ход под ваш конкретный запрос тяжело. Кода много.
Со Spring Authorization Server ты оказываешься в игровой комнате с конструктором в руках. Как собрал, так и поехало. Допустим, не нужен тебе ui - не используй ui. Это просто бекенд приложение. У вас уже есть ui "с прошлого раза", у которого используются специфичные url? - укажите их в конфигах Authroization Server, и он будет использовать их.
Мы можем "натянуть сову на глобус", и все это в рамках привычного для нас кода на Spring. Выбрав коммерческое решение, вы часто получаете "закрытую коробочку" и многих это может оттолкнуть. Кроме того, вы отдаете производителю на откуп решение проблем с купленным решением и завяываетесь на сроки вендора. Если вы не делаете rocket science и пользуетесь совсем небольшим количеством возможностей, то, возможно, есть смысл присмотреться к самостоятельной реализации. Это позволяет быстро чиниться и дорабатываться в случае необходимости.
Spring Authorization Server - это совсем не "серебряная пуля" в сравнении с уже имеющимися решениями, а просто возможная альтернатива, развитие и поддержка которой реализуемы и понятны c точки зрения кода для Spring/Java-разработчика.
Кстати, Spring предоставляет неплохую документацию к Authorization Server и отличные описания к исходникам на Github, которые подсвечивают все нужные термины и дают прямые ссылки на спецификации, читая которые, можно разобраться в том, как и что на самом деле устроено в "безопасном" мире.
Отличная пища для ума, поле для изучение и полигон для экспериментов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍17❤8👌2
Команда Spring АйО перевела и адаптировала доклад "Concurrency in Spring Boot Applications: Making the Right Choice" Андрея Шакирина с последнего Devoxx Belgium.
В докладе автор рассказал про различные подходы по работе с concurrency в целом и в Spring Boot приложениях в частности.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/862950/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍11❤3👎1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁46🔥9❤4⚡2