Рубріки: Теорія

Фреймворк 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

  1. Фреймворк Spring дозволяє швидко реалізувати нові можливості у робочому середовищі завдяки мікросервісам, які можна розвивати незалежно один від одного.
  2. Код можна розгорнути в будь-якій хмарі, а сервіси можна пов’язувати один з одним і масштабувати на будь-якій платформі.
  3. Spring надає фреймворки для розробки швидких і безпечних вебзастосунків, які можуть підключатися до будь-якого сховища даних.
  4. Spring можна використовувати для розробки програм, які масштабуються за потребою залежно від вимог.
  5. Програми на Spring можуть реагувати на бізнес-події та обробляти потокові дані в режимі реального часу.
  6. 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 можна знайти в його документації.

Останні статті

Айтівець Міноборони США понабирав кредитів і хотів продати рф секретну інформацію

32-річний розробник безпеки інформаційних систем Агентства національної безпеки Джарех Себастьян Далке отримав 22 роки в'язниці…

30.04.2024

Простий та дешевий. Українська Flytech запустила масове виробництво розвідувальних БПЛА ARES

Українська компанія Flytech представила розвідувальний безпілотний літальний апарат ARES. Основні його переваги — недорога ціна…

30.04.2024

Запрошуємо взяти участь у премії TechComms Award. Розкажіть про свій потужний PR-проєкт у сфері IT

MC.today разом з Асоціацією IT Ukraine і сервісом моніторингу та аналітики згадок у ЗМІ та…

30.04.2024

«Йдеться про потенціал мобілізації»: Україна не планує примусово повертати українців із ЄС

Україна не буде примусово повертати чоловіків призовного віку з-за кордону. Про це повідомила у Брюсселі…

30.04.2024

В ЗСУ з’явився жіночий підрозділ БПЛА — і вже можна проходити конкурсний відбір

В Збройних Силах України з'явився жіночий підрозділ з БПЛА. І вже проводиться конкурсний відбір до…

30.04.2024

GitHub на наступному тижні випустить Copilot Workplace — ШІ-помічника для розробників

GitHub анонсував Copilot Workspace, середовище розробки з використанням «агентів на базі Copilot». За задумкою, вони…

30.04.2024