Главная » Spring » Внедрение методов Spring

0

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

Но в этом разделе я хотел бы показать необычную форму DI, получившую название «внедренных методов». При использовании приема внедрения через методы доступа или конструкторы произ- водится внедрение значений в свойства компонента. Но, как пока- зано на рис. 3.5, прием внедрения методов совершенно отличается от двух предыдущих, потому что позволяет внедрять в компоненты определения целых методов.

Рис. 3.5. Внедрение методов – это разновидность внедрения, когда методы класса заменяются альтернативными реализациями

Некоторые языки программирования, такие как Ruby, позволяют добавлять новые методы в любой класс непосредственно во время выполнения, без изменения определения класса. Например, если

в приложении на языке Ruby потребуется добавить новый метод в класс String, который будет выводить длину строки, достаточно будет лишь определить новый метод:

class String

def  print_length

puts  "This  string  is  #{self.length}  characters  long" end

end

После добавления определения метода его можно вызвать для любого созданного в программе объекта String. Например, следую- щий фрагмент:

message = "Hello" message.print_length

выведет «This string is 5 characters long» в стандартный поток вывода.

Но это Ruby. Язык Java не такой гибкий. Тем не менее фреймворк Spring предоставляет Java-программистам возможность внедрения методов в Java-классы во время выполнения. Пускай он не такой эле- гантный, как в языке Ruby, но все же это шаг в нужном направлении.

Фреймворк Spring поддерживает две формы внедрения методов: Q замещение метода – позволяет во время выполнения замес- тить существующий метод (абстрактный или конкретный)

новой реализацией;

# внедрение метода чтения – позволяет во время выполнения заместить существующий метод (абстрактный или конкрет- ный) новой реализацией, возвращающей определенный ком- понент из контекста Spring.

Для начала рассмотрим, как в Spring действует поддержка более универсального способа замещения методов.

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

По теме:

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