1. введение
В этом базовом руководстве мы узнаем, как выполнить простую конфигурацию компонентов на основе XML с помощью Spring Framework.
2. Обзор
Давайте начнем с добавления зависимости библиотеки Spring в pom.xml :
org.springframework spring-context 5.1.4.RELEASE
Последнюю версию зависимости Spring можно найти здесь .
3. Внедрение зависимостей – обзор
Внедрение зависимостей-это метод, при котором зависимости объекта предоставляются внешними контейнерами.
Допустим, у нас есть класс приложения, который зависит от службы, которая фактически обрабатывает бизнес – логику:
public class IndexApp {
private IService service;
// standard constructors/getters/setters
}
Теперь предположим, что Сервис – это интерфейс:
public interface IService {
public String serve();
}
Этот интерфейс может иметь несколько реализаций.
Давайте быстро рассмотрим одну потенциальную реализацию:
public class IndexService implements IService {
@Override
public String serve() {
return "Hello World";
}
}
Здесь Index App -это компонент высокого уровня, который зависит от компонента низкого уровня, называемого Service .
По сути, мы отделяем Index App от конкретной реализации Сервиса , которая может варьироваться в зависимости от различных факторов.
4. Внедрение зависимостей – в действии
Давайте посмотрим, как мы можем ввести зависимость.
4.1. Использование Свойств
Давайте посмотрим, как мы можем связать зависимости вместе, используя конфигурацию на основе XML:
Как видно, мы создаем экземпляр Index Service и присваиваем ему идентификатор. По умолчанию компонент является одноэлементным. Кроме того, мы создаем экземпляр Index App .
Внутри этого боба мы вводим другой боб, используя метод сеттера.
4.2. Использование конструктора
Вместо того, чтобы вводить компонент с помощью метода setter, мы можем ввести зависимость с помощью конструктора:
4.3. Использование статической Фабрики
Мы также можем ввести боб, возвращенный фабрикой. Давайте создадим простую фабрику, которая возвращает экземпляр Service на основе предоставленного номера:
public class StaticServiceFactory {
public static IService getNumber(int number) {
// ...
}
}
Теперь давайте посмотрим, как мы могли бы использовать вышеприведенную реализацию для введения компонента в Индексировать приложение с использованием конфигурации на основе XML:
В приведенном выше примере мы вызываем статический метод GetService с помощью factory-method для создания компонента с идентификатором MessageService , который мы вводим в IndexApp.
4.4. Использование Заводского Метода
Давайте рассмотрим фабрику экземпляров, которая возвращает экземпляр Service на основе предоставленного номера. На этот раз метод не является статическим:
public class InstanceServiceFactory {
public IService getNumber(int number) {
// ...
}
}
Теперь давайте посмотрим, как мы могли бы использовать вышеприведенную реализацию для введения компонента в Индексировать приложение с использованием конфигурации XML:
В приведенном выше примере мы вызываем метод GetService на экземпляре Instance Service Factory , используя factory-method для создания компонента с идентификатором MessageService , который мы вводим в IndexApp .
5. Тестирование
Вот как мы можем получить доступ к настроенным бобам:
@Test
public void whenGetBeans_returnsBean() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("...");
IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class);
assertNotNull(indexApp);
}
6. Заключение
В этом кратком руководстве мы проиллюстрировали примеры того, как мы можем внедрить зависимость с помощью конфигурации на основе XML с помощью Spring Framework.
Реализацию этих примеров можно найти в проекте GitHub – это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.