Middle-starter-pack по spring data
Особенности использования Transactional в SpringBoot приложении (разбор типовых ошибок среднестатистического разработчика).

Объектно-ориентированный язык программирования
Особенности использования Transactional в SpringBoot приложении (разбор типовых ошибок среднестатистического разработчика).

Эта публикация – практический кейс c кратким туториалом по реализации TLS-соединения, на основе российских стандартов шифрования, основанных на компонентах КриптоПро (CP). Статья не содержит рекламы или попытки сподвигнуть к выбору конкретных компонентов. Я столкнулся с задачей реализации шифрованного подключения к системам бюро кредитных историй (БКИ) в части оценки платежеспособности физических лиц. У меня было ограничение - необходимо было использовать КриптоПро (CP). В процессе реализации задачи открыл для себя несколько интересных моментов. Процесс их "открытия" был чарующим и загадочным. Чары мне обеспечил CP, а с загадками помогали службы поддержки БКИ и CP. Этой статьей хочу помочь сэкономить время и сделать прозрачным процесс реализации шифрованного подключения. В начале статьи дам небольшой теоретический экскурс. Если Вас интересуют детали реализации, то сразу переходите к разделу "Установка и настройка CP компонентов", код, приведенный в статье выложен тут. Приятного чтения.

Приветствую тебя, Хабр! Сегодня мы попробуем разобраться, как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью Kafka.

Несмотря на то, что данная статья была опубликована более полугода назад, команда Spring АйО по-прежнему считает ее актуальной, важной и интересной.
Себастьян Делойзе, контрибьютор Spring Framework, делится обзором усилий команды Spring по оптимизации эффективности приложений во время выполнения. Он рассматривает Virtual Threads, GraalVM Native Image, Project CRaC, Project Leyden и всё это в контексте Spring!

Давно хотелось раскрыть интересную тему локализации ПО, но так чтобы не повторяться и не цитировать прописные истины.
Поэтому рассказываю как локализовать обычное корпоративное Java-приложение на.. несуществующие фантастические языки: Клингонский и Р’льех.

Всем привет! Мы продолжаем нашу серию статей по созданию собственного SSO. В этой статье мы увидим итоговый проект и разберём самые интересные решения из него. Подумаем над безопасностью приложения и настроим защиту от XSS и CSRF атак, а также изучим разные Security Headers. В заключение статьи мы создадим собственый Grant Type.

Прежде чем обсуждать, когда использовать аннотации вместо комментариев, важно сначала понять, что такое аннотации и для чего они используются в Java.
Аннотации не заменяют комментарии к документации (у них есть и другие применения), но во многих случаях (особенно в тех случаях, когда нам нужны аналогичные структурированные комментарии) они предпочтительнее комментариев. Причина в том, что аннотации являются типами в Java, как и любой другой тип данных, определяемый пользователем. И, следовательно, их можно использовать после того, как они определены.
Аннотации в Java на самом деле представляют собой всего лишь форму интерфейсов, и, следовательно, определение типа аннотации похоже на определение интерфейса. Ключевому слову «интерфейс» в определении аннотации предшествует символ «@».
Типичный комментарий к документации — это то, что обычно появляется в начале любого определения класса. Он содержит имя автора, версию, дату, дату последнего изменения и т. д. Итак, пример комментария будет выглядеть примерно так:

Привет всем! Недавно я решил поэкспериментировать с SonarQube и создать свой собственный кастомный плагин для проверки кода на соответствие моим правилам разработки. В этой статье я поделюсь с вами своим опытом и покажу, как вы тоже можете создать такой плагин своими руками.

Операторы "&" и "|" не вызывают вопросов, когда применяются в подходящих ситуациях. Но знаете ли вы о всех последствиях использования побитовых операторов вместо логических в Java? В этой статье мы рассмотрим как плюсы производительности такого подхода, так и минусы его читабельности.

Я написала этот текст из желания помочь разработчикам, которым только предстоит познакомиться с Camunda. С чего начать и как не потеряться - подробно, с кодом и скринами.

Почему появляются баги? Существует много причин, но если мы взглянем на конкретные примеры, то сможем увидеть закономерности — и спроектировать наши системы так, чтобы избежать целых классов ошибок.
Под катом автор блога Considerations on Codecrafting рассматривает ошибки, связанные с наложением ссылок, предлагает методы их предотвращения и призывает внедрить эти методы на уровне проектирования новых языков.
Обеспечение безопасности веб сервисов — одна из важных частей процесса разработки. Если если в инфраструктуре несколько сервисов, то каждый из них должен быть должным образом защищен. Если реализовывать проверки политик безопасности в каждом сервисе, то затраты на разработку и поддержку таких сервисов существенно возрастают. При этом не избежать дублирования кода и ошибок разработки. Поэтому, управление защитой сервисов должно быть централизованным. Далее мы рассмотрим, как организовать централизованную защиту приложений на примере API-шлюза с открытым исходным кодом OpenIG, а так же добавим проверку авторизации доступа с JWT токеном
Исходный код для статьи https://github.com/maximthomas/openig-protect-ws/

В любой разработке рано или поздно появляются тестовые стенды — отдельные инсталляции тестовой сборки вашей разрабатываемой системы, с тестовыми данными и тестовыми же учетными записями. Именно отсюда происходит знаменитое «admin/admin», которое вбивал в поля авторизации наверное каждый разработчик.
Теперь представьте что у вас в разработке не один проект а скажем 50, часть из которых требует нескольких стендов. Знакомо?

Статья родилась, как водится, из рабочей задачи — нужно было внедрить аудит-логирование в некоторые микросервисы на Java и Spring.

Меня зовут Денис, я тимлид команды R&D в Naumen Service Management Platform.
Так как наш продукт написан в основном на Java, мы с большим нетерпением ждали очередной LTS релиз в прошлом году, предвкушая мощь виртуальных потоков и крутизну доработанного pattern matching.
В этой статье расскажу, с какими препятствиями на пути миграции систем на Java 21 столкнулась наша команда, что мы получили после обновления и стоит ли вообще обновляться.

Эта статья по Spring Boot 3.2 посвящена надстройке над WebClient, которая называется RestClient и представляет собой более интуитивный и современный подход взаимодействия с RESTful сервисами.
В мире Spring Boot отправка HTTP запросов к внешним сервисам является весьма распространенной задачей. Традиционно при достижении этой цели разработчики полагались на RestTemplate. Однако, по мере развития Spring Framework, на свет появился новый и более мощный способ обработки HTTP запросов: так называемый WebClient. Spring Boot 3.2 представил нам надстройку над WebClient, которая получила название RestClient.
RestClient предлагает нам более современные и интуитивно понятные способы взаимодействия с RESTful сервисами.
Привет, Хаброжители!
ООП — это замечательно. За несоблюдение этой парадигмы принято ругать, а знание паттернов зачастую является обязательным. Но даже правильный подход не страхует полностью от ошибок. О том, как сломать программу при помощи обычного шаблонного метода, мы сегодня и узнаем.

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

Все началось еще лет 10 назад, когда я впервые наткнулся на статью где было описано как эксперт по 3D-технологиям вместил сильно обфрусцированный код рейтрейсера на C++ в размеры своей визитки.