Фреймворк Spring та його особливості
Зміст
Що таке фреймворк Spring
Фреймворк Spring спрощує та прискорює програмування на Java. Це дуже популярний Java-фреймворк.
Spring — це фреймворк із відкритим вихідним кодом. Його написано Родом Джонсоном та випущено у 2003 році за ліцензією Apache 2.0.
Принцип роботи
Spring дозволяє створювати програми зі звичайних об’єктів Java (plain old Java objects, POJO) і застосовувати до них корпоративні сервіси. Ця можливість стосується моделі програмування Java SE і повністю або частково — Java EE.
Програми Java зазвичай складаються з об’єктів, які працюють спільно. Отже, об’єкти програми залежать один від одного.
Інверсія керування (Inversion of Control, IoC) надає стандартизовані способи компонування окремих об’єктів у застосунок, який є готовим до роботи. Шаблони проєктування представлено в цьому фреймворку як об’єкти першого класу, які можна інтегрувати у власний застосунок.
Ще однією концепцією в основі Spring Framework є аспектно-орієнтоване програмування (Aspect Oriented Programming, AOP).
У більшості корпоративних програм реалізовано загальні поняття, які стосуються різних типів об’єктів і модулів. Це, наприклад, ведення журналів, керування транзакціями, перевірка даних тощо.
В об’єктно-орієнтованому програмуванні модульність програми досягається за рахунок класів, а в аспектно-орієнтованому — за рахунок аспектів.
Spring AOP усуває залежності загальних завдань від класів, чого неможливо досягти під час використання звичайної моделі об’єктно-орієнтованого програмування.
Наприклад, може існувати окремий клас для ведення журналів, а функціональні класи мають викликати ці методи для заповнення журналів.
Нижче наведено основні концепції AOP.
Aspect | Аспект є класом, що реалізує загальні для багатьох класів поняття, наприклад, керування транзакціями. Аспекти можуть бути звичайними класами, які налаштовуються з використанням XML-конфігурації Spring. Також можна скористатися інтеграцією Spring AspectJ, щоб визначити клас як аспект за допомогою анотації @Aspect. |
Join point | Точка з’єднання є певною точкою у застосунку. У Spring AOP точка з’єднання завжди означає виконання методу. |
Advice | Рекомендації є методами, які виконуються після досягнення певної точки з’єднання з відповідним набором точок з’єднання. |
Pointcut | Набір точок з’єднання є виразом, який зіставляється з точками з’єднання, щоб визначити, чи слід виконувати рекомендацію. Для цих виразів у Spring використовується мова виразів AspectJ. |
Target Object | Це цільові об’єкти, до яких застосовуються рекомендації. Spring AOP реалізується з використанням проксі часу виконання, тому такий об’єкт завжди доступний через проксі. Це означає, що підклас створюється під час виконання, цільовий спосіб перевизначається й у нього включається рекомендація залежно від конфігурації. |
Проксі AOP | Реалізація AOP в Spring використовує динамічний проксі JDK для створення проксі-класів для цільових класів і виклику рекомендацій. Такі класи називаються проксі-класами AOP. |
Weaving | Це процес зв’язування аспектів з іншими об’єктами для створення проксі-об’єктів із рекомендаціями. Це може відбуватися під час компіляції, завантаження чи виконання. Spring AOP здійснює зв’язування під час виконання. |
Для яких завдань використовується фреймворк Spring
- Фреймворк Spring дозволяє швидко реалізувати нові можливості у робочому середовищі завдяки мікросервісам, які можна розвивати незалежно один від одного.
- Код можна розгорнути в будь-якій хмарі, а сервіси можна пов’язувати один з одним і масштабувати на будь-якій платформі.
- Spring надає фреймворки для розробки швидких і безпечних вебзастосунків, які можуть підключатися до будь-якого сховища даних.
- Spring можна використовувати для розробки програм, які масштабуються за потребою залежно від вимог.
- Програми на Spring можуть реагувати на бізнес-події та обробляти потокові дані в режимі реального часу.
- Spring можна використовувати для автоматизації завдань та офлайн-обробки даних у зручний для вас час.
Переваги й недоліки Spring
Переваги Spring
- Гнучкість. Фреймворк надає гнучкі бібліотеки на допомогу розробникам. Користувачі можуть обрати інструкції для конфігурації на базі XML та Java. IoC та DI також сприяють розширенню функціональності та можливостей.
- Портативність. Це портативний фреймворк, тому що клієнтську сторону можна використовувати в бізнес-логіці програми Swing
Бібліотека для створення графічного інтерфейсу для програм мовою Java, а серверну — у вебзастосунку або EJB. Spring не займає багато місця на диску. Об’єм базової версії становить лише 2 МБ.
- Швидкість. Фреймворк забезпечує швидкий запуск і завершення роботи. Завдяки цьому підвищується продуктивність.
- Простота тестування. У фреймворку Spring розробники можуть легко проводити тестування. Його простота забезпечується завдяки впровадженню залежностей.
- AOP. Аспектно-орієнтоване програмування дозволяє розширити модульність застосунків. Замість зміни існуючого коду ми можемо створити новий код і нову поведінку окремо одне від одного.
Недоліки Spring
- Складність. Працювати зі Spring досить складно. Для використання цього фреймворку розробникам потрібні відповідні навички та досвід.
- Крута крива входження. Якщо ви не маєте досвіду розробки, вивчати Spring буде важко. Це зумовлено використанням новітніх технологій програмування в цьому фреймворку.
- Використання XML. Під час розробки програми Spring потрібно створювати багато коду XML. Це також може бути проблематично для розробників.
- Паралельні механізми. Безліч застосувань, що забезпечуються фреймворком, можуть стати в пригоді досвідченим розробникам, а недосвідчених вони можуть збентежувати. Можуть виникнути проблеми з вибором правильних механізмів та ухваленням правильних рішень. Це уповільнює розробку програм.
- Загрози безпеці. Такі загрози, як міжсайтові сценарії, дуже поширені. Проблема полягає в документації Spring. Вона містить замало рекомендацій щодо усунення цих загроз та запобігання їм. Тому хакери можуть легко вставити свій код у застосунки.
Відмінності між Spring та Spring Boot
Spring Framework є платформою для розробки, яка складається з безлічі міні-платформ, бібліотек і розширень. Одне з її розширень — Spring Boot. Spring Boot спрощує та прискорює роботу зі Spring.
Розширення Spring Boot полегшує процес налаштування програми за рахунок попередньо налаштованих компонентів. Воно більше підходить для створення мікросервісів і хмарних програм завдяки своїй полегшеній архітектурі й швидкому запуску.
За допомогою Spring Boot можна легко створювати автономні програми виробничого рівня на основі Spring, які можна «просто запустити». Завдяки потужним функціям і простоті використання цього розширення багато розробників обирають його для створення веб- або мобільних застосунків.
Якщо вам не потрібна унікальна конфігурація, то для створення проєкту можна використовувати Spring Boot. Для додавання залежностей ви можете скористатися системою анотацій Spring Framework. Водночас у вас залишиться доступ до всіх можливостей Spring Framework.
Приклад використання фреймворку Spring
У цій статті ми розглянемо процес створення й запуску найпростішої програми на Spring.
Крок 1. Готуємо IDE та JDK
Spring підтримується багатьма середовищами розробки (IDE). Найчастіше використовуються IntelliJ IDEA, Spring Tools для різних IDE, Visual Studio Code, Eclipse та багато інших. Детальні інструкції щодо завантаження, встановлення та налаштування ви знайдете на сайтах IDE.
Що стосується Java Development Kit (JDK), для розробки на Spring рекомендується використовувати BellSoft Liberica JDK версії 17. Завантажте та встановіть дистрибутив для своєї операційної системи.
Крок 2. Створюємо проєкт на Spring Boot
Відкрийте сайт start.spring.io для створення вебпроєкту:
- у розділі Project оберіть Maven;
- у розділі Language оберіть Java;
- у розділі Spring Boot оберіть поточну версію, але не миттєвий знімок (не snapshot);
- у полі Add dependencies введіть Web, потім оберіть Spring Web;
- натисніть кнопку GENERATE, щоб створити й завантажити архів з проєктом.
Крок 3. Редагуємо файл програми
Робота з IDE
Якщо ви користуєтесь IDE з підтримкою Spring, створити каркас проєкту можна в IDE.
Попередні вимоги
Для розробки програми Spring Boot у Visual Studio Code потрібно встановити таке:
- Java Development Kit (JDK) (якщо його ще не встановлено)
- Extension Pack for Java
- Spring Boot Extension Pack
Створення проєкту
Розширення Spring Initializr дозволяє знаходити залежності та генерувати нові проєкти Spring Boot.
Після встановлення Spring Boot Extension Pack відкрийте палітру команд (Command Palette, Ctrl+Shift+P), введіть Spring Initializr, щоб почати генерувати проєкт Maven або Gradle, і виконайте інструкції майстра.
Hello
У цій статті ми скористаємось прикладом з офіційного сайту.
Відкрийте файл DemoApplication.java
, що знаходиться в каталозі src/main/java/com/example/demo
.
Додайте в нього анотації та метод, як зазначено нижче:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("/hello") public String hello(@RequestParam(value = "name", defaultValue = "World" return String.format("Hello %s!", name); } }
Метод hello()
приймає рядковий аргумент name
, а потім комбінує його зі словом Hello
у коді. Якщо в запиті буде вказано ім’я Nika
, то відповідь буде такою: Hello Nika
.
Анотація @RestController
вказує Spring, що цей код описує кінцеву точку, яка буде доступною у мережі. @GetMapping(“/hello”)
показує, що для відповіді на запити, які надсилано на адресу http://localhost:8080/hello
, необхідно викликати метод hello()
.
Анотація @RequestParam
вказує Spring, що в запиті може бути вказано значення параметра name
, але якщо його не вказано, замість нього за замовчуванням використовуватиметься слово World
.
Крок 4. Запуск коду
Відкрийте папку проєкту (наприклад, demo) й запустіть команду:
Linux:
./mvnw spring-boot:run
Windows :
mvnw.cmd spring-boot:run
Результат:
Останні два рядки кажуть про те, що Spring запущено. Вбудований у Spring Boot сервер Apache Tomcat працює як вебсервер та перехоплює запити, що надсилаються на порт 8080 локального хоста.
Відкрийте веб-браузер і введіть його в адресному рядку http://localhost:8080/hello
.
Ви побачите таку відповідь:
Якщо ж в адресі ми вкажемо параметр name
і його значення (додамо ?name=Nika
наприкінці адреси), то отримаємо таку відповідь:
Висновок
- Ми розглянули фреймворк Spring Framework. Він спрощує та прискорює розробку застосунків на Java та складається з безлічі міні-сервісів, бібліотек і розширень.
- Розширення Spring Boot ще більше прискорює та спрощує розробку застосунків, хоча теоретично дає менше гнучкості через автоматичні налаштування.
- За допомогою ініціалізатора на start.spring.io можна швидко створити заготовку програми.
- Spring Framework підтримується багатьма IDE. У деяких для роботи з ним потрібно встановлювати розширення, а середовище розробки IntelliJ IDEA заздалегідь налаштовано для створення проєктів на Spring.
- Детальну інформацію про фреймворк Spring можна знайти в його документації.
Favbet Tech – це ІТ-компанія зі 100% українською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологій та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: