Сообщения

Показаны сообщения с ярлыком "Method Injection"

Spring IoC контейнер: зависимости, инъекция метода, произвольная замена метода

Изображение
Менее полезной формой внедрения метода, чем внедрением метода поиска , является возможность замены произвольных методов в управляемом компоненте другой реализацией метода. С помощью метаданных конфигурации на основе XML вы можете использовать элемент replace-method, чтобы заменить существующую реализацию метода другой, для развернутого компонента. Рассмотрим следующий класс, в котором есть метод computeValue, который мы хотим переопределить: Java public class MyValueCalculator { public String computeValue(String input) { // некоторый реальный код... } // некоторые другие методы... } Kotlin class MyValueCalculator { fun computeValue(input: String): String { // некоторый реальный код... } // некоторые другие методы... } Класс, который реализует интерфейс org.springframework.beans.factory.support.MethodReplacer, предоставляет определение нового метода, как показано в следующем примере: Java /** * предназначен для переопреде...

Spring IoC контейнер: зависимости, инъекция метода поиска

Изображение
Инъекция метода поиска (Lookup method injection) - это способность контейнера переопределять методы в управляемых контейнером bean-компонентах и ​​возвращать результат поиска для другого именованного bean-компонента в контейнере. Поиск обычно включает в себя прототип bean-компонента, как в сценарии, описанном в предыдущем посте . Spring Framework реализует внедрение этого метода, используя генерацию байт-кода из библиотеки CGLIB для динамической генерации подкласса, который переопределяет метод. Чтобы этот динамический подкласс работал, класс, который является подклассом контейнера bean-компонента Spring, не может быть окончательным (final), и переопределяемый метод также не может быть конечным (final). Модульное тестирование (юнит-тестирование) класса, который имеет абстрактный метод, требует, чтобы вы сами создали подкласс класса и предоставили реализацию-заглушку абстрактного метода. Конкретные методы также необходимы для сканирования компонентов, для которого требуются конкретн...