Анотації у Spring Framework


Зараз використання всіляких фреймоврків дуже популярне, оскільки дозволяє спростити життя програмістам, тому доводиться вчитися ними користуватися. На курсах IT Академії нам уже деякий час розповідають про таку штуку як Spring Framework і виглядає так, що фінальний проект доведеться робити із використанням саме цього фреймоврку, тому варто б акцентувати на ньому трохи уваги.

Загалом, минулого разу, коли я писав про Spring Framework, то зауважив, що використання XML для реалізації інверсії керування дозволяє пере-збирати програму як конструктор LEGO, не перекомпільовуючи при цьому код. І воно все дуже класно, але третя редакція Spring мінімізує використання XML для налаштування і переходить до такої штуки як анотації.

Що таке анотації у Java розповідати, мабуть, не буду, бо цей пост призначено для того, аби я собі виписав всі популярні анотації Spring Framework в одному місці і потім міг легко їх знайти. Загалом анотації у Spring можна поділити на кілька груп.

Анотації конфігурації контексту (context configuration) використовуються для керування створенням та ін’єкцією бінів. Сюди відносяться наступні анотації:

  1. @Autowired – Оголошує, що конструктор, поле (атрибут), сеттер чи якийсь конфігураційний метод мусить автоматично бути зв’язаний зі значенням (присвоєння значень відбувається за типами). Такий метод чи атрибут не може бути public.
  2. @Configurable – Служить для оголошення типу, який може бути інжектований за допомогою Spring Framework (причому сам цей об’єкт може бути створений і за межами Spring).
  3. @Order служить для впорядкування елементів набору.
  4. @Qualifier служить для того, щоб здійснити автоматичне зв’язування не за типом, а якимись альтернативними способами. Тобто можна явно вказати який бін куди прив’язати.
  5. @Required використовується для методів-сеттерів і вказує, що відповідний атрибут необхідно ініціалізувати (інжектувати) для роботи програми. Якщо цього не зробити, автоматично отримаємо помилку.
  6. @Scope служить для того, аби вказати для біна певний тип життєвого циклу (наприклад singleton, prototype, session, request).

Анотації для поділу програми на MVC-прошарки (stereotype annotations) вказують, що певний java-клас виконуватиме у програмі роль контролера, сервісу, репозиторію, тощо. Це такі анотації як:

  1. @Component – загальна анотація для будь-якого компонента.
  2. @Controller – анотація для позначення класу контролером Spring MVC.
  3. @Repository – позначає компонент репозиторієм .
  4. @Service – позначає компонент сервісом.

Анотації Spring MVC служать для мінімізації використання XML-конфігурування. Сюди відносять анотацію @Controller із попереднього списку і ще наступні анотації:

  1. @InitBinder – позначає метод, який відповідає за налаштування зв’язування даних.
  2. @ModelAttribute – позначає метод, який ініціалізує модель значенням, що повертається цим методом. Або атрибут, значенням якого ініціалізується модель.
  3. @RequestMapping – пов’язує шаблон URL чи HTTP-метод (або і те, і інше) з java-методом чи певним контролером.
  4. @RequestParam – пов’язує параметр запиту із параметром методу.
  5. @SessionAttributes – вказує на те, що атрибути моделі слід зберігати у сесії.

Анотація @Transactional служить для задання поведінки транзакцій (можна зробити транзакцію read-only, вказати таймаути, тощо).

Анотації для аспектно-орієнтованого програмування (AspectJ) здійснюється за допомогою наступних анотацій:

  1. @Aspect – оголошує, що клас буде виступати у ролі аспекту (реалізовуватиме наскрізну функціональність і буде взаємодіяти з рештою програми у окремих точках – joint points, pointcuts).
  2. @After – вказує на те, що метод слід викликати після pointcut.
  3. @AfterReturning – вказує на те, що метод слід виконати після того, як у pointcut виконання завершиться успішно.
  4. @AfterThrowing – вказує на те, що метод слід виконати, якщо після pointcut виникне помилка чи виключна ситуація (exeption).
  5. @Around – вказує на те, що метод слід виконувати “довкола” pointcut – до і після.
  6. @Before – вказує на те, що метод слід виконати перед pointcut.
  7. @DeclareParents – присвоює відповідним типам нових “батьків”, служить для доповнення якимись методами існуючих класів.
  8. @Pointcut – вказує на те, що даний метод (порожній) виступатиме у ролі точки pointcut.

Додатково є ще анотації для тестування (наприклад із використанням JUnit 4), анотації, що реалізують JSR-250, тощо.

Почитайте ще оце:

Залиште коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *