вторник, 7 июня 2016 г.

Spring: Основи

Вітаю! Настав час познайомитися з основами розробки з таким загальнопопулярним та необхідним фреймворком як Spring.

Для початку роботи необхідно роз’яснити декілька основних понять на яких живе та процвітає фреймворк. Без базового розуміння наступного розібратись буде в рази складніше.

Spring Framework - побудований на принципі інверсіїї контролю. А паттерн ін’єкції залежностей реалізує принципи інверсіїї контролю в застосунку.



Inversion of Control (IoC) - інверсія контролю - принцип об’єктно орієнтованого програмування, що використовується для зменшення зв’язаності в програмному забезпеченні.
Він заснований на наступних принципах:
  1. Модулі верхнього рівня не мають залежати від модулів нижнього рівня. І перші і останні мають залежати від абстракцій.
  2. Абстракції не мають залежати від деталей. Деталі мають бути залежними від абстракцій. 
Aspect Oriented Programming (AOP) - аспектно орієнтоване програмування - парадигма програмування заснована на ідеї розділення функціональності для полегшення поділу програми на модулі. AOP та Spring - взаємодоповнюючі технології, що дозволяють вирішувати складні задач.

Dependency Injection (DI) - архітектурна модель та паттерн програмування ін’єкція залежностей - передача виконнаня задач стороннім бібліотекам. DI допомагає досягти слабкої зв’язуваності. Існує три способи впровадження залежностей: через конструктор, через сеттер та через інтерфейс.

Inversion of Control Container - це інструмент, що вставляє залежності в об’єкт і тим самим робить його готовим до використання. Класи Spring Inversion of Control container є частиною пакетів org.springframework.beans та org.springframework.context.
Головною метою патерна Inversion of Control в контексті Spring Framework є виключення залежностей компонентів чи класів застосунків від конкретних реалізацій додаткових інтерфейсів та делегуванні повноважень з управління створенням потрібних реалізацій Inversion of Control контейнера.
Головними перевагами Inversion of Control контейнера є:
  1. Управління залежностями.
  2. Спрощення повторного використаня класів та компонентів.
  3. Спрощення UNIT-тестування.
  4. Чистий, легкий код (класи не займаються створенням об’єктів.
BeanFactory - основний інтерфейс контейнра Spring Inversion of Control. ApplicationContext - розширює інтерфейс BeanFactory можливостями Spring AOP.
ApplicationContext - це центральний інтерфейс Spring Framework, що забезпечує застосунок конфігураційними налаштуваннями. Є безліч реалізацій цього інтерфейсу, що дає різноманітність в можливостях налаштування застасунку. Декілька корисних інтерфейсів похідних від ApplicationContext - ConfigurableApplicationContext та WebApplicationContext.

Інтерфейс ApplicationContext забезпечує:

  • Доступ до компонентів застосунку через фабрики бінів.
  • Можливість завантаження файлу ресурсів в загальному виді.
  • Можливість публікації івентів та реєстрації лісенерів.
Існує декілька способів отримати файл конфігурації проекту через відомі реалізації інтерфейсу ApplicationContext:
  1. AnnotationConfigApplicationContext - для ініціалізації контексту та отримання бін при конфігурації проекту за допомогою анотацій.
  2. ClassPathXmlApplicationContext - для завантаження XML файлу з каталогу ресурсів та отримання об’єкту контейнера у випадку конфігурації Spring проекту за допомогою XML.
  3. FileSystemXmlApplicationContext - може завантажити файл конфігурації XML з будь-якого каталогу файлової системи.
  4. AnnotationConfigWebApplicationContext та XmlWebApplicationContext - для веб застосунків

Java Bean - це java клас написаний за наступними правилами:

  • Клас повинен мати публічний конструктор без параметрів. Такий конструктор дозволяє інструментам створювати об'єкт без додаткових складностей з параметрами. 
  • Властивості класу повинні бути доступні через методи get, set, is, які відповідають стандартним згодам про імена. Це дозволить інструментам автоматично визначати і оновлювати вміст bean'ів. 
  • Клас повинен бути серіалізованим. Це дає можливість надійно зберігати та відновлювати стан bean незалежним від платформи і віртуальної машини способом. 
  • Він не повинен містити ніяких методів обробки подій.

Spring Bean - це звичайний Java клас позначений як Spring Bean.

Spring Bean Scopes 
Існує всього п’ять обмежень для Spring Bean:
  1. singleton - створюється всього один екземпляр для кожного контейнера - значення за замовчування.
  2. prototype - на кожен запит повертається новий екземпляр біна.
  3. request - те ж що й попередній але для web застосунків.
  4. session - новий екземпляр буде створений для кожної HTTP сесії.
  5. global-session використовується для створення біна в глобальній сесії для Portlet застосунків.
Якщо даний набір не задовольняє ваших потреб то ви можете створити власний scope для біна, але в більшості випадків цього достатньо.


Spring Bean Configuration

Фреймворк Spring дозволяє сконфігурувати бін в застосунку декількома способами:

  • XML Based Configuration - створення XML файлу з конфігурацією бінів, найдавніший спосіб
  • Annotation Based Configuration - конфігурація бінів методом навішування аннотацій на методи та класи.
  • Java Based Configuration - починаючи з версії 3.0 є можливість зконфігурувати бін. використовуючи Java код
  • Groovy - використовую мову програмування groovy.


Посилання:
1. spring.io
2. becomejavasenior.com
3. tutorialspoint.com/springu

Author's GitHub, LinkedIn

Комментариев нет:

Отправить комментарий