Главная » Spring » Аспектно- ориентированный  Spring

0

Возможно, для потребителя учет электроэнергии «под честное слово» может выглядеть и неплохо, но для электрических компаний такое положение дел далеко от идеала. Именно поэтому в наших до- мах стоят электросчетчики и раз в месяц к нам приходят учетчики, чтобы снять показания.

Некоторые функции в программных системах напоминают элект- росчетчики в наших домах. Они должны применяться в нескольких точках в пределах приложения, но не желательно вызывать их явно в каждой точке.

Учет потребления электроэнергии является важной функцией, но не первоочередной в понимании большинства. Скосить траву на лужайке, пропылесосить ковер и почистить ванную комнату – вот важные дела для домовладельца. Учет потребления электроэнергии в их домах – это пассивное занятие с точки зрения домовладельца. (Хотя было бы здорово, если бы уход за лужайкой тоже превратился в пассивное занятие, особенно в такую жару.)

Некоторые операции, выполняемые программами, являются об- щими для большинства приложений. Регистрация событий, обеспе- чение безопасности и управление транзакциями – все это важные операции, но должны ли прикладные объекты принимать активное участие в них? Или для прикладных объектов лучше сосредоточить- ся на решении проблем предметной области, а управление некото- рыми аспектами предоставить кому-то другому?

Функции, охватывающие несколько точек приложения, в разра- ботке программного обеспечения называются сквозными. Как прави- ло, сквозные функции концептуально отделены (но часто встроены) от основной логики приложения. Отделение основной логики от сквозных функций – это именно то, для чего предназначено аспект- но-ориентированное  программирование  (AOP).

В главе 2 рассказывалось, как использовать прием внедрения за- висимостей (DI) для настройки и управления прикладными объек- тами. Подобно тому, как внедрение зависимостей помогает отделить прикладные объекты друг от друга, аспектно-ориентированное про- граммирование помогает отделить сквозные функции от объектов, на которые они влияют.

Реализация регистрации событий является типичным примером применения аспектов, но это далеко не единственная область, где они могут пригодиться. Далее в книге будет представлено несколько практических примеров применения аспектов, включая декларатив- ные транзакции, обеспечение безопасности и кеширование.

В этой главе исследуется поддержка аспектов в Spring, вклю- чая объявление аспектами обычных классов и особенности приме- нения аннотаций для создания аспектов. Кроме того, здесь будет представлено расширение AspectJ, еще одна популярная реализация AOP, способная дополнить реализацию AOP в Spring. Но сначала,

прежде чем погрузиться в проблемы управления транзакциями, безопасности и кеширования, посмотрим, как реализуются аспекты в фреймворке Spring, начав с нескольких примеров, демонстрирую- щих основы AOP.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии