Выбор правильного Java-рантайма для вашего проекта на Spring Boot может показаться тривиальным. В конце концов, все популярные рантаймы основываются на коде OpenJDK и предлагают одинаковые программные интерфейсы.
Но не все рантаймы реализованы одинаково. В этой статье автор описывает различные показатели, которые могут повлиять на ваше решение выбрать определенный дистрибутив Java для Spring Boot приложения.
Ссылка на статью — КЛИК
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13 2
Эта статья по Spring Boot 3.2 посвящена надстройке над WebClient, которая называется RestClient и представляет собой более интуитивный и современный подход взаимодействия с RESTful сервисами.
Ссылка на статью — КЛИК
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13
Данная статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot.
Библиотека предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию
@ActuatorProfiling
и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).Ссылка на статью — КЛИК
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Благодаря этой статье вы узнаете, как подключить и настроить Liquibase в Spring Boot приложении, сгенерировать скрипты инициализации и миграции схемы БД, а также дополнить уже существующие changelog файлы новыми скриптами миграции.
Ссылка на статью — КЛИК
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12 7💯4👍1
@Value
в Spring (Часть 1)Давненько не было спринга на канале, поэтому сегодня поговорим об аннотации
@Value
— где её использовать, как её использовать и примеры использования.Аннотация
@Value
позволяет внедрять значения свойств в поля, конструкторы или параметры методов Spring-компонентов. С её помощью мы можем легко получать значения из различных источников: properties-файлы, системные переменные, переменные окружения и т.д.Пример использования:
Допустим, у нас есть файл
application.properties
со следующими значениями:bot.name=example_bot
bot.token=123abc-234...
В необходимом классе создадим поля
token
и bot
и пометим их аннотацией @Value
:@Value("${bot.name}")
private String name;
@Value("${bot.token}")
private String token;
Теперь Spring будет искать указанные свойства в файле
application.properties
. Это была основа основ, но на этом возможности @Value
не заканчиваются — в следующей части мы рассмотрим ещё несколько крутейших фишек этой аннотации.Please open Telegram to view this post
VIEW IN TELEGRAM
@Value
в Spring (Часть 2)Позавчера мы узнали, что представляет из себя аннотация
@Value
и как её обычно используют 80% разработчиков.Но сегодня мы рассмотрим ещё несколько интересных возможностей, которые предоставляет
@Value
.1. Внедрение значений прямо из аннотаций:
@Value("123abc-234...")
private String token;
2. Установка дефолтного значения:
@Value("${bot.token:some default token}")
private String token;
3. Внедрениe массива значений:
bot.versions=1, 2, 3
@Value("${bot.versions}")
private int[] versions;
Полезно знать и то, что когда мы помечаем поле аннотацией
@Value
, Spring по умолчанию ищет свойства в файле application.properties
, но мы можем указать другой файл с помощью аннотации @PropertySource
:@Configuration
@PropertySource("classpath:another.properties")
public class Config {
@Value("${bot.name}")
private String name;
@Value("${bot.token}")
private String token;
}
Таким образом,
@PropertySource
используется для указания источника свойств, а @Value
— для внедрения значений свойств.Please open Telegram to view this post
VIEW IN TELEGRAM
@Controller
и @RestController
Сегодня поговорим о двух аннотациях в Spring —
@Controller
и @RestController
, разберём их различия и приведём примеры использования.Управление входящими HTTP-запросами — это самая типичная задача в разработке веб-приложений. Для этого в Spring и существуют аннотации
@Controller
и @RestController
.@Controller
Как бы банально не звучало, но эта аннотация используется для определения классов в качестве контроллеров. Это помогает Spring определить компоненты, которые будут обрабатывать входящие запросы:
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring MVC");
return "hello";
}
}
В этом примере метод hello() обрабатывает запрос на URL /hello и возвращает имя представления (hello), которое будет отображаться пользователю как ответ.
@RestController
@RestController
появилась в Spring 4.0 и объединяет в себе две аннотации — @Controller
и @ResponseBody
. Это означает, что она не только помечает класс как Spring MVC Controller, но и автоматически преобразует возвращаемые данные в формат JSON или XML:@RestController
public class MyRestController {
@RequestMapping("/hello")
public String hello() {
return "Hello, Spring REST";
}
}
В этом случае, когда метод hello() обрабатывает запрос на URL /hello, он возвращает строку «Hello, Spring REST», которая автоматически преобразуется в формат JSON и отправляется в ответе на запрос.
Таким образом, основное различие между
@Controller
и @RestController
заключается в том, что @Controller
используется для обработки веб-страниц, а @RestController
— для создания RESTful веб-сервисов, которые возвращают данные в формате JSON или XML.Аннотация
@Controller
может быть использована и для Web MVC, и для REST приложений, но в случае REST приложений к каждому методу контроллера придется добавлять аннотацию @ResponseBody
для автоматического преобразования ответа в формат JSON или XML. Определить, MVC это приложение или REST, можно по наличию или отсутствию аннотации @ResponseBody
в методах контроллера.100
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассматривается реализация горячей перезагрузки секретов в Java-сервисах на Spring без перезапуска приложения.
Автор объясняет, как с помощью
WatchService
отслеживать изменения сертификатов и учетных данных, чтобы автоматически обновлять их в работающем сервисе.tags: #статья #spring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
NullPointerException
— одна из самых неприятных ошибок в Java, которая может неожиданно привести к сбоям в работе приложения и усложнить жизнь пользователям.В статье рассматриваются современные подходы к обеспечению null-безопасности в Spring-приложениях с использованием JSpecify и NullAway.
Что вы узнаете из статьи?
▶️ Почему NullPointerException остается одной из самых частых ошибок в Java?▶️ Как JSpecify позволяет управлять nullability на уровне API?▶️ В чем разница между JSpecify и NullAway, и когда использовать каждый из них?▶️ Как статический анализ помогает находить потенциальные ошибки на этапе компиляции?▶️ Как интегрировать null-безопасность в Spring-приложение без лишних сложностей?
Автор делится практическими рекомендациями по внедрению null-безопасности, которые снижают количество ошибок и делают код более устойчивым.
tags: #статья #spring
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
В статье разбираются подходы к тестированию контроллеров в Spring Boot и сложности, связанные с избыточностью
@SpringBootTest
и ограничениями юнит-тестов. Предлагается оптимальный способ с использованием
@WebMvcTest
, который сохраняет HTTP-семантику и ускоряет выполнение тестов.tags: #статья #spring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
В статье разбираются подходы к тестированию контроллеров в Spring Boot и сложности, связанные с избыточностью
@SpringBootTest
и ограничениями юнит-тестов. Предлагается оптимальный способ с использованием
@WebMvcTest
, который сохраняет HTTP-семантику и ускоряет выполнение тестов.tags: #статья #spring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1