Обновить
133.03

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Введение в Spring AOP на примере кастомизации логирования

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.8K

Аспектно-ориентированное программирование (AOP) — это мощный инструмент для разделения кода, который позволяет изолировать кросс-функциональные задачи, такие как логирование, обработка транзакций и безопасность, от основной бизнес-логики. В этой статье мы рассмотрим, как использовать AOP в Spring для реализации кастомного логирования с помощью аннотации и аспектов.

Читать далее

Что нового в Spring Boot 3.4

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.8K

Недавно состоялся релиз Spring Framework 6.2, вслед за ним последовал релиз Spring Boot 3.4.

Команда Spring АйО подготовила перевод статьи Josh Long об основных изменениях и улучшениях, которые вошли в последний релиз.

Читать далее

Работа с @SpyBean: использование в Spring Boot

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели3.8K

Всем привет!

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

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

В этой статье рассматривается правильное использование аннотации @SpyBean. Разбирается реальный сценарий с базой данных, а также показано, как с её помощью можно сделать тесты более мощными и точными.

Читать далее

Пишем Android приложение для фильтрации спам-звонков

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.3K

Всем привет! Меня зовут Иван Чечиков. В этой статье я расскажу о своем пет-проекте - Android приложении, которое может идентифицировать нежелательные входящие звонки.

Подробности – под катом.

Читать далее

От кода к смыслу: улучшенная панель Structure в IntelliJ IDEA 2024.3

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.9K

Совсем недавно вышла IntelliJ IDEA 2024.3 – последний мажорный релиз IDE в этом году. И одним из самых важных нововведений этой версии стала улучшенная панель Structure. 

Команда Spring АйО перевела статью Siva Katamreddy (Developer Advocate в JetBrains), в которой Siva рассказывает, как улучшенная панель помогает решать задачи, и делится историей создания этой функциональности.

Читать далее

Сериализация в Java. Давайте разбираться

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.7K

Java предоставляет разработчикам удобные инструменты для сериализации объектов. Несмотря на то, что они кажутся донельзя примитивными, их внутренняя реализация содержит много интересных моментов. В этой статье мы рассмотрим основы сериализации и некоторые нюансы, связанные с ней. И, конечно, посмотрим, как она работает изнутри.

Читать далее

Кэширование с FeignClient: как ускорить микросервисы и стать героем проекта

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.6K

Кэширование с FeignClient: ускоряем микросервисы и радуем пользователей

Статья о том, как добавить кэширование в FeignClient с помощью Caffeine Cache и сделать микросервисы молниеносными. Простая настройка, минимум кода, максимум пользы — пошагово на примере Java и Spring Boot, чтобы ваши запросы летали, а API не тормозил.

Читать далее

Версионирование эндпоинтов — это просто

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели8.7K

Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium. 

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

Читать далее

Честный взгляд на Spring Data JPA

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.6K

Spring Data JPA считается швейцарским ножом для работы с БД в Java. Однако Spring Data JPA не заслуживает своего триумфа и вот почему...

Читать далее

От подвала до облака: как обучить нейросеть в домашних условиях

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.6K

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

Читать далее

Spring Framework 6.2.0: переопределение бинов в тестах

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.2K

Недавно вышел Spring Framework 6.2, который включил в себя множество улучшений и новых возможностей. К одним из них можно отнести переопределение бинов в тестах.

В новом переводе от команды Spring АйО вы узнаете как можно использовать @TestBean, @MockitoBean и @MockitoSpyBean для переопределения бинов в тестах.

Читать далее

Эволюция Assert'a на примере тестирования вездехода из Звездных Войн

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели1.6K

Привет, Хабр! Меня зовут Михаил Палыга, я инженер в Блоке обеспечения и контроля качества выпуска изменений ПО в РСХБ‑Интех. На проекте для проверки данных мы пользуемся библиотекой AssertJ — Java библиотекой с открытым исходным кодом, используемой для написания гибких, содержательных и легко читаемых проверок в тестах Java. Мы любим использовать цепочки методов в других наших классах, поэтому данная библиотека органично вписалась в код наших тестов.

Я опишу, как со временем менялся наш подход к проведению проверок данных и как менялись сами классы проверок. А чтобы было чуть проще и интересней займемся тестированием чего‑нибудь из вселенной Звездных Войн. Например, протестируем имперский бронированный транспортный вездеход AT‑AT.

Читать далее

Паттерн Builder в Java на котиках

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.5K

Привет, друзья! Сегодня рассмотрим реализацию паттерна «Строитель» в Java. Паттерн может превратить необъятный хаос параметров в аккуратную и управляемую конструкцию. И всё это на примере наших пушистых друзей — котиков.

Читать далее

Ближайшие события

Почему в разработке чат-ботов мы в качестве основы используем Jmix

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.3K

И за шесть лет работы в нашей айти-команде пока не нашли ни одного критичного минуса. Рассказываю как мы пилим чат-ботов на базе Jmix

Читать далее

Test-Driven Development: как полюбить модульное тестирование

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели3.4K

Как и многие, я, как мог, сопротивлялся Test-Driven Development. Я не понимал, почему тесты нужно писать перед реализацией. Почему мы должны выворачивать разработку наизнанку и переворачивать естественный, как мне тогда казалось, процесс, с ног на голову.

Но, так или иначе, разработка через тестирование настигла и меня. Да, до сих пор получается не идеально, но значимость модульных тестов сейчас мне видится неоспоримой.

И об этом мы поговорим в статье ниже.

Мы разберём страхи, останавливающие разработчика перед тем, чтобы начать, наконец, писать тесты. Выявим очевидные преимущества. Обсудим основные правила разработки через тестирование. И подкрепим всё это реальными примерами.

Читать далее

Оптимистические и пессимистические блокировки на примере Hibernate (JPA)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

Привет, Хабр! Недавно пытался изучить тему «оптимистические» и «пессимистические» блокировки, но на мое удивление ни в ру сегменте, ни в англ — хороших статей, которые дают полное представление об двух типах блокировок с применением Hibernate, — нет, поэтому я решил агрегировать всю информацию в одной короткой статье. Так как это моя первая статья, буду рад критике:) Итак, погнали.

P. S. Это статья не является полным гайдом, так как в первую очередь она нацелена на то, чтобы дать понятное описание двух решений одной проблемы, а если нужны примеры использования, то добро пожаловать в Google:)

Читать далее

Kafka Streams ч3: Stateless processing

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели803

В предыдущих статьях [ноль, один] мы рассмотрели основные концепции Kafka Streams и сравнили их со стандартными подходами обработки потоковых данных. В этой части мы сосредоточимся на stateless processing (обработке без сохранения состояния) и поймем как применять различные операции Kafka Streams для решения практических задач. Мы создадим приложение для обработки данных медицинской клиники.

Требования к ETL пайплайну:

Приложение должно обрабатывать поток JSON-сообщений из входного топика Kafka (patient-records), содержащих информацию о пациентах медицинской клиники. Цель состоит в том, чтобы применять различные stateless операции для трансформации данных и отправлять результаты в выходной топик (clinic-notifications-topic). Это позволит продемонстрировать, как использовать основные возможности Kafka Streams для обработки данных без сохранения состояния.

Читать далее

Книга: «Простое объектно-ориентированное проектирование: чистый и гибкий код»

Время на прочтение9 мин
Охват и читатели10K
image Привет, Хаброжители!

Объектно-ориентированное проектирование (ООП) — не просто чисто инженерная задача; оно перерастает в искусство. Никакая заданная последовательность шагов не приведет к оптимальному проекту. Объектно-ориентированное проектирование требует творческого подхода.

В книге «Простое объектно-ориентированное проектирование: чистый и гибкий код» Маурисио Аниче рассматривает ООП с двух точек зрения: как предотвратить резкое увеличение сложности системы и как получить «достаточно хорошую» архитектуру.
Читать дальше →

Протоколы внутренней маршрутизации

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9K

Материал продолжает серию статей, посвящённую семинарам внутреннего обучения, которые проводятся в IT‑компании NAUKA. Надеемся, что сведения, представленные в ней, будут полезными для школьников старших классов, студентов младших курсов ВУЗов, сотрудников IT‑компаний, не связанных в своей работе с IT‑инфраструктурой.

В данном разделе будут кратко рассмотрены протоколы внутренней динамической маршрутизации (RIP, EIGPR, OSPF) наиболее часто используемые в настоящее время для сетей IPv4.

Читать далее

YYYY? yyyy!

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.9K

Знаете ли вы, в чём разница между 'Y' и 'y' символами в паттерне даты в Java? В этой статье мы рассмотрим, как неправильное форматирование даты может привести к ошибке, а также расскажем вам про нашу новую диагностику V6122 для языка Java, которая убережёт вас от внезапных путешествий во времени.

Читать далее

Вклад авторов