Dependency Injection у Spring: пояснюємо на пальцях

Коли програміст-початківець вперше відкриває документацію до Spring Framework, на нього одразу висипається купа грізних термінів: Dependency Injection (DI), Inversion of Control (IoC), ApplicationContext, Bean. Здається, що це вища математика. Ми вже розглядали DI в минулих матеріалах але цю дуже не просту тему краще розібрати по болтиках для повного розуміння. Насправді за цими розумними словами ховається надзвичайно проста та красива ідея. Це історія про те, як перестати збирати складні речі вручну й довірити…

Java Collections Framework: List, Set чи Map?

Уявіть, що ви прийшли на склад інтернет-магазину. На одній полиці товари лежать строго в тому порядку, у якому їх привезли. На іншій — кожен предмет унікальний, і дублікати сюди не кладуть за жодних умов. А в кутку стоїть картотека, де кожному товару відповідає унікальний штрих-код. У світі Java цей склад називається Java Collections Framework (JCF). Це потужний набір інтерфейсів та класів, який дозволяє ефективно керувати групами об’єктів. Проте у…

Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

Традиційно Java славилася своєю концепцією «Write Once, Run Anywhere» завдяки віртуальній машині JVM та JIT-компіляції (Just-In-Time). Проте у світі мікросервісів, безсерверних обчислень (Serverless) та Kubernetes критично важливими стали швидкість старту застосунку та мінімальне споживання оперативної пам’яті (RSS). У відповідь на ці виклики екосистема Java висунула новаторські потужні технології: GraalVM Native Image, Project Leyden та CRaC (Coordinated Restore at Checkpoint). Давайте для початку трохи детально розберемося ключові компоненти, архітектуру…

JBang: Як вивчати Java легко

Java довгий час мала репутацію мови, яка потребує занадто багато «ритуалів»: створення структури каталогів, налаштування Maven або Gradle, написання довгих pom.xml лише для того, щоб протестувати одну ідею. JBang — це інструмент, який змінює правила гри, дозволяючи запускати Java-код так само легко, як скрипти на Python або Bash. Що таке JBang? JBang — це утиліта для командного рядка, яка дозволяє створювати, редагувати та запускати самодостатні Java-скрипти. Основна ідея…

Agent Skills: Що це таке і чому про це варто знати

Agent Skills — це переносимі модулі процедурної пам’яті (інструкції, критерії, ресурси), які LLM-агент підвантажує динамічно, залежно від поточних задач. Вони вирішують проблему надмірного розростання промптів (prompt sprawl) та дозволяють організувати знання у вигляді версіонованих артефактів (директорій з кодом та Markdown-документацією). На відміну від Retrieval-Augmented Generation (RAG), що забезпечує доступ до фактів, та Tools (інструментів), які виконують дії, Skill визначає алгоритм — тобто, як саме діяти у конкретній ситуації.…

Dependency Injection в Java

Dependency Injection (впровадження залежностей) — один з фундаментальних патернів проектування в сучасній Java-розробці. Цей принцип допомагає створювати гнучкі, тестовані та підтримувані додатки. Давайте розберемося, що це таке і як правильно його застосовувати. Що таке Dependency Injection? Dependency Injection — це техніка, при якій об’єкт отримує свої залежності ззовні, а не створює їх самостійно. Замість того, щоб клас сам інстанціював потрібні йому об’єкти, вони передаються йому через конструктор, setter-методи…

Міграція Java-додатків на Spring Boot 3: Spring Boot Properties Migrator

Перехід на Spring Boot 3 є значним кроком для будь-якого Java-додатку, оскільки ця версія вносить багато змін, включаючи перехід на Jakarta, оновлення залежностей та зміни в конфігурації. Одним із найкорисніших інструментів для полегшення цього процесу є Spring Boot Properties Migrator — компонент, який автоматично допомагає виявляти застарілі налаштування та пропонує їх сучасні альтернативи. Що таке Spring Boot Properties Migrator? Spring Boot Properties Migrator — це спеціальна бібліотека, яка…

Налаштування Eureka Server

Eureka Server — це сервіс відкриття (service discovery) від Netflix, який став стандартом де-факто в екосистемі Spring Cloud для мікросервісної архітектури. У цій статті ми детально розглянемо, як правильно налаштувати Eureka Server для вашого проєкту. Що таке Eureka і навіщо він потрібен? В мікросервісній архітектурі сервіси потребують механізму для виявлення один одного. Замість жорсткого кодування адрес, Eureka надає динамічний реєстр сервісів, де кожен мікросервіс реєструється при запуску та…

Stream API в Java: Потужні рішення які покращать ваш код

Stream API з’явився в Java 8 і докорінно змінив підхід до обробки колекцій. Якщо ви досі пишете вкладені цикли для фільтрації та трансформації даних, ця стаття для вас. Розглянемо 5 практичних прикладів, які покажуть всю потужність Stream API. 1. Фільтрація та трансформація в один рядок Завдання: Отримати список email-адрес активних користувачів, відсортованих за алфавітом. Традиційний підхід: З Stream API: Код став коротшим, читабельнішим і декларативним. Ми описуємо “що”…

MyBatis у Spring Boot: налаштування та робота

У Java-спільноті Hibernate framework де-факто вважається стандартом для зручної роботи з базою даних. Розробнику важко вибрати інший фреймворк, тому що іноді він не знає про існування альтернатив. MyBatis не реалізує JPA спеки, а є альтернативою JPA. Основна відмінність MyBatis від Hibernate — це те, як здійснюється мапування об’єктів. Hibernate мапує таблиці БД на сутності, надаючи нам доступ до даних. Для отримання даних Hibernate генерує SQL-запити, а генеровані запити…