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, поэтому его должно быть легко импортировать и запускать как есть.