Рубрика «spring framework»

Всем привет. Спешим поздравить студентов с профессиональным праздником и сообщить о том, что уже в феврале у нас стартует курс «Разработчик на Spring Framework»! Этому и будет посвящена сегодняшняя публикация.

Лига Справедливости в опасности, и только Альфред может всех спасти — с новой системой управления с Spring Boot, Spring Data и MongoDB.

Для Лиги Справедливости настали темные времена, когда устрашающий Дарксайд решил поработить человечество. Бэтмен и Чудо-женщина занялись поисками участников Лиги, и не хватает только одного важного момента — надлежащей системы управления членами Лиги Справедливости.

Введение в Spring Boot с Spring Data Mongo - 1Читать полностью »

Привет! Меня зовут Андрей Неведомский и я главный инженер в СберТехе. Я работаю в команде, которая занимается разработкой одного из системных сервисов ЕФС (Единой Фронтальной Системы). В своей работе мы активно используем Spring Framework, в частности его DI, и время от времени сталкиваемся с тем, что резолвинг зависимостей в спринге оказывается недостаточно «умным» для нас. Эта статья – результат моих попыток сделать его умнее и в целом разобраться с тем, как он работает. Надеюсь, и вы сможете узнать из неё что-то новое об устройстве спринга.

Кастомизация резолвинга зависимостей в Spring - 1
Читать полностью »

Введение в Spring Boot: создание простого REST API на Java - 1

Из-за громоздкой конфигурации зависимостей настройка Spring для корпоративных приложений превратилась в весьма утомительное и подверженное ошибкам занятие. Особенно это относится к приложениям, которые используют также несколько сторонних библиотек

Каждый раз, создавая очередное корпоративное Java-приложение на основе Spring, вам необходимо повторять одни и те же рутинные шаги по его настройке:

  • В зависимости от типа создаваемого приложения (Spring MVC, Spring JDBC, Spring ORM и т.д.) импортировать необходимые Spring-модули
  • Импортировать библиотеку web-контейнеров (в случае web-приложений)
  • Импортировать необходимые сторонние библиотеки (например, Hibernate, Jackson), при этом вы должны искать версии, совместимые с указанной версией Spring
  • Конфигурировать компоненты DAO, такие, как: источники данных, управление транзакциями и т.д.
  • Конфигурировать компоненты web-слоя, такие, как: диспетчер ресурсов, view resolver
  • Определить класс, который загрузит все необходимые конфигурации

Читать полностью »

Всем привет!

В этой статья я продемонстрирую основные компоненты для создания Reactive RESTful миксросервисов, используя Spring WebFlux, Spring Security, Spring Cloud Netflix Eureka (Service Discovery), Hystrix (Circuit Breaker), Ribbon (Client Side Load Balancer), External Configuration (через git repository), Spring Cloud Sleuth, Spring Cloud Gateway, Spring Boot Reactive MongoDB. А также Spring Boot Admin и Zipkin для мониторинга.

Читать полностью »

Доброго времени суток!

Спустя некоторое время решил вновь написать сюда и поделиться своим опытом. На этот раз статья будет о том, как кастомизировать стандартные валидаторы, и вызывать их там, где нам будет нужно, используя Spring — аспекты. Ну а сподвигло меня на написание — практически отсутствие подобной информации, особенно на русском.

Проблема

Итак, суть приложения примерно такова: есть gateway — api, который принимает запрос, а в дальнейшем модифицирует и перенаправляет его соответствующему банку. Вот только запрос для каждого из банков отличался — как и параметры валидации. Поэтому валидировать изначальный запрос не представлялось возможным. Тут было два пути — использовать аннотации из javax.validation, либо писать свой отдельный слой валидации. В первом случае была загвоздка — по умолчанию объекты можно валидировать только в контроллере. Во втором случае так-же были минусы — это лишний слой, большое количество кода, да и в случае изменения моделей, пришлось бы менять и валидаторы.

Поэтому было принято решение найти способ дергать стандартные валидаторы там где это было необходимо, а не только в контроллере.

Дергаем валидаторы

Спустя пару часов копания в гугле были найдены пару решений, самое адекватное из которых было заавтовайрить javax.validation.Validator и вызвать у него метод validate, которому в качестве параметра нужно передать валидируемый объект.

Казалось бы, решение найдено, но автовайрить везде валидатор не казалось хорошей идеей, хотелось более элегантного решения.

Добавляем АОП

Недолго думая я решил попробовать адаптировать под это решение мною всеми любимые аспекты.

Логика была примерно следующей: создаём аннотацию, и вешаем её над методом который преобразует один объект в другой. Дальше в аспекте перехватываем все методы помеченные этой аннотацией и вызываем метод validate для возвращаемого ими значения. Профит.
Читать полностью »

image

Скрипты — один из самых распространенных способов сделать приложение более гибким, с возможностью поправить что-то прямо на ходу. Конечно же, у этого подхода есть и недостатки, нужно всегда помнить про баланс между гибкостью и управляемостью. Но в этой статье мы не будем рассуждать “в общем” по поводу плюсов и минусов использования скриптов, мы рассмотрим практические способы реализации этого подхода, а также представим библиотеку, которая предоставляет удобную инфраструктуру для добавления скриптов в приложения, написанные на Spring Framework.
Читать полностью »

В предстоящий релиз Spring Data под кодовым именем Lovelace мы собираемся включить новый модуль: Spring Data JDBC.

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

Читать полностью »

Старые песни о главном. Java и исходящие запросы - 1

Одна из задач с которой сталкивается 99.9% разработчиков — это обращение к сторонним ендпоинтам. Это могут быть как внешние API, так и «свои» микросервисы, сейчас все и всё бьют на микросервисы — да. Получить или отправить данные, просто, но иногда изобретают велосипеды. Можете назвать 5 способов реализации запросов на Java (c использованием библиотек и без)? Нет — добро пожаловать под кат, да — заходите и сравните ;) Читать полностью »

Здравствуйте! Продолжаю серию миграций на новые версии фреймворков.
В прошлый раз это был JUnit 5 за 10 мин., в этот раз будет Spring 5.

Когда говорят о новом в Spring 5, в основном начинают говорить про реактивный стек, опуская достаточно много того нового, что в нем появилось помимо него. Реактивных драйверов к базам данных совсем немного, поэтому мой видеообзор про остальные важные обновления, надеюсь, будет актуально для большинства пользователей Spring. Кроме того, вместе со Spring 5.x обновляются и все его зависимости: spring-data 2.x, spring-security 5.x. В январе этого года наш учебный проект Spring 5/JPA Enterprise (Topjava) мигрировал со Spring 4.3.x на Spring 5. Процесс прошел достаточно легко и в конце небольшого видео на 10 минут я также приведу все изменения в коде проекта.

Читать полностью »