Pull to refresh

Пишем свой spring-boot-starter

Java *
Sandbox
Большинство java-разработчиков уже познакомились с проектом Spring Boot, позволяющим быстро написать приложение, использующее различные компоненты Spring Framework (Spring MVC, Spring Data и многие другие).

Всё удобство Spring Boot основано на использовании так называемых Starter, которые позволяют получить набор сконфигурированных бинов, готовых к использованию и доступных для конфигурации через properties-файлы. Но что делать, если для нужной технологии еще не написано стартера?
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 42K
Comments 0

Как быстро подключить google proto3 к вашему spring (boot) web проекту

Java *

Краткое описание как подключить Google Protocol Buffers / Proto3 к вашему Spring проекту



Spring Boot: позволяет быстро разрабатывать stand-alone веб приложения которые вы можете «просто» запустить с минимумом настроек.

Google proto3: легкий, гибкий, автоматический механизм сериализации данных.

Эта статья объяснит как быстро соединить эти технологии вместе. Ознакомиться с технологиями вы можете самостоятельно пройдя по ссылкам в материалах.
Читать дальше →
Total votes 6: ↑3 and ↓3 0
Views 5.4K
Comments 0

Spring и JDK 8: Вы все еще используете @Param и name/value в Spring MVC аннотациях? Тогда статья для Вас

Programming *Java *Studying in IT
Tutorial


Здравствуй, Хаброчитатель!


Разрабатывая учебный проект по Spring Boot 2 решил поэкспериментировать с @Param в запросах Spring Data JPA, а точнее c их отсутствием:


@Transactional(readOnly = true)
public interface UserRepository extends JpaRepository<User, Integer> {

   @Query("SELECT u FROM User u WHERE LOWER(u.email) = LOWER(:email)")
   Optional<User> findByEmailIgnoreCase(@Param("email") String email);

   List<User> findByLastNameContainingIgnoreCase(@Param("lastname") String lastName);
}

(про магию, как работает второй метод есть в старой публикации По следам Spring Pet Clinic).


Убрав @Param можно убедится, что Spring прекрасно работает и без них. Я слышал про параметр в компиляции, который позволяет не дублировать названия в аннотациях, но я ничего не специального не делал, поэтому решил покопать поглубже подебажить.


Если Вы еще пользуетесь аннотациями из заголовка статьи, Spring Boot и JDK 8, прошу под кат:


UPDATE: аннотации @PathVariable и @RequestParam все еще часто нужны, чтобы приложение работало корректно. Но их атрибуты value/name уже не обязательны: соответствие ищется по именам переменных.

Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Views 18K
Comments 7

Еще один способ оптимизации docker-образов для Java приложений

Java *DevOps *

История по оптимизации образов для java приложений началась с выхода статьи в блоге спринга — Spring Boot in a Container. В ней обсуждались различные аспекты по созданию docker образов для spring boot приложений, в том числе и такой интересный вопрос, как уменьшение размеров образов. Для наших команд это было актуально в силу ряда причин, поэтому мы решили применить это решение к нашим приложениям.


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


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


Если причины, зачем вообще что-то делать с многометровым бутовым приложением перед помещением его в образ, вам объяснять не надо, можете сразу перейти к описанию подхода по оптимизации. Если вы успели ознакомиться со статьей из спрингового блога, можете перейти к решению найденных проблем.

Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 8.3K
Comments 5

Heroku + Docker + Spring Boot

Programming *Java *
Tutorial
Далее речь пойдет о моем опыте запуска докеризованного Spring Boot приложения на бесплатных виртуальных машинах облачного сервиса Heroku. Одно из главных преимуществ этого провайдера в том, что он дает возможность создавать бесплатные виртуалки с ограничением по часам работы, причем для этого достаточно только регистрации. Даже платежные реквизиты подтверждать не требуется, хотя если их подтвердить можно получить дополнительные бонусы. Подробнее про их прайс можно прочитать здесь. С моей точки зрения их политика по части бесплатных ресурсов почти не имеет аналогов.

И так, после того, как вы создали на Heroku приложение есть несколько способов развернуть в нем ваш код
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 19K
Comments 7

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 1

Programming *Java *
Tutorial
В этой статье я разберу использование утилиты Liquibase в Spring Boot приложениях для версионирования структуры реляционной БД и миграции этой структуры с одной версии на другую. В первой части разберем базовый пример, а во второй поговорим об использовании liquibase-mave-plugin для отката изменений и автоматической генерации скриптов через сравнение структур БД.

Начнем с того, что создадим простейшее приложение на Spring Boot + JPA (Hibernate). В этом нам поможет Spring Initializr. Из зависимостей выбираем JPA, MySQL и Web. Liquibase тоже можно подключить на этом шаге, но для лучшего понимания мы это сделаем далее вручную.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 57K
Comments 39

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 2

Programming *Java *
Tutorial
В предыдущей части мы разобрались с основными возможностями Liquibase и написали базовый пример Spring boot приложения, который использует Liquibase для инициализации БД. Полный код базового приложения можно увидеть тут на GitHub. В этой статье мы поговорим про liquibase-maven-plugin и те дополнительные возможности, которые он нам дает для версионирования структуры БД. Начнем с того, как автоматически создавать скрипты при помощи функции сравнения.

Предположим, что нам понадобилось внести какие-либо изменения в структуру нашей БД. Например, мы хотим, чтобы email не мог быть null. Безусловно, для такого маленького изменения можно было бы подкорректировать код и скрипты вручную, но как быть если изменений будет больше? В этом случае к нам на помощь придет встроенная в Liquibase возможность сравнения БД. Интересной её особенностью является то, что сравнивать можно не только две базы данных, но и базу данных с набором JPA сущностей в нашем приложении. Именно так мы сейчас и поступим!
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 26K
Comments 12

Микросервисы со Spring Boot. Часть 1. Начало работы

Java *API *
Translation
Tutorial
Это первая часть серии статей по основам микросервисных архитектур.

В ней вы познакомитеь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.

Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.

Это статья входит в серию статей «Микросервисы со Spring Boot»:


Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 46K
Comments 7

Микросервисы со Spring Boot. Часть 2. Создание микросервиса Forex

Java *API *
Translation
Tutorial
Это вторая часть серии статей по основам микросервисных архитектур, в которой показывается, как создать микросервис с помощью Spring Boot и заставить его работать с Spring MVC, JPA, Hibernate и H2.

В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.

Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Views 19K
Comments 0

Микросервисы со Spring Boot. Часть 3. Создание микросервиса конвертации валют

Java *API *
Translation
Tutorial
Это третья часть серии статей по основам микросервисных архитектур, в которой вы узнаете, как создать микросервис конвертации валют.

В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 22K
Comments 3

Микросервисы со Spring Boot. Часть 4. Использование Ribbon для балансировки нагрузки

Java *API *
Translation
Это часть 4 серии о микросервисных архитектурах, в которой мы сосредоточимся на использовании Ribbon для балансировки нагрузки.

Это статья входит в серию статей «Микросервисы со Spring Boot»:


В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Views 11K
Comments 0

Микросервисы со Spring Boot. Часть 5. Использование сервера имен Eureka

Java *API *
Translation
Tutorial
В этой заключительной части нашей серии архитектур микросервисов мы научимся включать сервер имен Eureka и позволять микросервисам взаимодействовать с ним.

Это статья входит в серию статей «Микросервисы со Spring Boot»:


В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 16K
Comments 0

Примеры GraphQL на Java для начинающих [со Spring Boot]

Java *
Translation
Tutorial

В этой статье мы рассмотрим пример GraphQL на Java и создадим простой сервер GraphQL со Spring Boot.



Таким цыпочкам тоже нравятся примеры GraphQL на Java со Spring Boot!


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


В этой статье мы рассмотрим пример GraphQL на Java и создадим простой сервер GraphQL со Spring Boot.

Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 18K
Comments 2

Разработка Java-приложений для Kubernetes с использованием Eclipse JKube

Red Hat corporate blog Open source *Java *Cloud services *Openshift *
25 лет назад Java пошла в широкие программистские массы, чтобы в итоге стать одним из тех стержней, вокруг которых строятся стеки приложений. Однако сегодня многие люди и организации, долгие годы хранившие верность Java, заняты тем, что переходят или думают переходить на платформу Kubernetes или ее производные, такие как Red Hat OpenShift или Amazon EKS.



Увы, Kubernetes отличается крутой кривой обучения и вводит еще один операционный уровень в привычный для Java-программистов процесс разработки. Сегодня мы расскажем, как использовать Eclipse JKube, чтобы упростить эти дополнительные операции, связанные с Kubernetes и контейнерами, а также обеспечить безболезненную миграцию на облачную платформу с сохранением привычной экосистемы Java. Более того, мы покажем, как развертывать Java-приложения на платформе OpenShift с помощью плагина OpenShift Maven.
Читать дальше: Разработка Java-приложений для Kubernetes с использованием Eclipse JKube
Total votes 5: ↑5 and ↓0 +5
Views 5.5K
Comments 5

Что было раньше: код или документация? OpenApi (OAS 3.0) и проблемы кодогенерации на Java

Мир Plat.Form (НСПК) corporate blog Java *API *

Задача интеграции сервисов и различных систем является чуть ли не одной из основных проблем современного IT. На сегодняшний день самым популярным архитектурным стилем для проектирования распределенных систем является REST. Но, как известно, единого стандарта для RESTful сервисов нет, а у кажущейся простоты и свободы есть обратная сторона медали. Не менее важной является задача интеграции систем разными командами или даже компаниями, с которой приходит вопрос об актуальности документации на протяжении жизни всего проекта, и удобного способа передачи потребителю.

Эту проблему отчасти удалось решить при помощи спецификации OpenAPI (OAS 3.0)[1], но все равно часто встает вопрос о правильном применении и подводных камнях кодогенерации, например на языке Java. И можно ли полностью предоставить аналитикам написание функциональных требований, документации и моделей в yml форме для OpenAPI, а разработчикам предоставить возможность только написание бизнес-логики?

Читать далее
Total votes 5: ↑5 and ↓0 +5
Views 6.3K
Comments 3

Spring Boot app with Apache Kafka in Docker container

Programming *Java *Apache *Industrial Programming *
Translation
Tutorial

Privet, comrads!

In this article i’ll show how easy it is to setup Spring Java app with Kafka message brocker. We will use docker containers for kafka zookeeper/brocker apps and configure plaintext authorization for access from both local and external net.

Link to final project on github can be picked up at the end of the article.

Read more
Total votes 1: ↑1 and ↓0 +1
Views 20K
Comments 1

Trunk Based Development и Spring Boot, или ветвись оно все по абстракции

Java *Git *DevOps *
Sandbox
Tutorial

Всем привет!

Закончилась осень, зима вступила в свои законные права, листья уже давно опали и перепутанные ветви кустарников наталкивают меня на мысли о моём рабочем Git репозитории… Но вот начался новый проект: новая команда, чистый, как только что выпавший снег, репозиторий. "Тут все будет по другому" - думаю я и начинаю "гуглить" про Trunk Based Development.

Если у вас никак не получается поддерживать git flow, вам надоели кучи этих непонятных веток и правил для них, если в вашем проекте появляются ветки вида "develop/ivanov", то добро пожаловать в под кат! Там я пробегусь по основным моментам Trunk Based Development и расскажу о том, как реализовать такой подход, используя Spring Boot.

Читать далее
Total votes 9: ↑9 and ↓0 +9
Views 7.7K
Comments 14

Кастомная (де) сериализация даты и времени в Spring

Java *
Sandbox

Представьте довольно распространённую ситуацию: ваше приложение взаимодействует с клиентами, которые находятся в разных часовых поясах. Вам часто приходится работать с датами, а для корректной работы системы, они передаются с указанием часового пояса отправителя. При этом, вам нужно:

1)      При получении запроса привести дату к серверному времени и сохранить в базу данных в таком виде

2)      В ответ возвращать дату и время с указанием серверного часового пояса

Чтобы избавиться от лишних вызовов методов для преобразования даты, Spring предоставляет удобный механизм для написания кастомной сериализации и десериализации.

Читать далее
Total votes 9: ↑8 and ↓1 +7
Views 4.1K
Comments 6

REST API с использованием Spring Security и JWT

Programming *Java *
Sandbox

Рано или поздно каждый Java-разработчик столкнется с необходимостью реализовать защищенное REST API приложение. В этой статье хочу поделиться своей реализацией этой задачи.

Читать далее
Total votes 8: ↑4 and ↓4 0
Views 41K
Comments 11