JavaRush /Java блог /Random /Преимущества использования Spring
Alex
37 уровень

Преимущества использования Spring

Статья из группы Random
Многие начинающие разработчики рано или поздно сталкиваются со Spring - популярным фреймворком для разработки приложений на Java. Главное, что позволяет сделать Spring – упростить разработку J2EE приложений для разработчика. Вот основные преимущества, которые получает разработчик при использовании Spring:
Преимущества использования Spring - 1
  • Spring предоставляет каркас вашего будущего приложения, если хотите «заготовку» для вашего будущего приложения. При этом фреймворк диктует вам правила построения приложения – есть определенная архитектура приложения, в которую вам нужно встроить свою функциональность. Эта функциональность собственно и будет бизнес логикой вашего приложения. В состав Spring входит много подпроектов, «заточенных» под определенную функциональность (SpringMVC, Spring Security, SpringData и др. полный список можно увидеть по адресу https://spring.io/projects), из которых разработчик может выбрать наиболее подходящий ему, а остальные не использовать – это модульный принцип построения приложения;

  • в приложении на основе Spring объекты слабосвязаны за счет использования внедрения зависимостей. Одной из целью создания Spring было разорвать зависимость одних объектов от других. Что такое зависимость? Это когда объект Object1 использует методы другого объекта Object2, т.е объект Object1 зависит от объекта Object2, чьи методы он использует. А почему он зависит? А потому, что пока объект Object2 не создан, Object1 не сможет реализовать свою функциональность. Как разорвать зависимость? В объект Object1 «внедрить» ссылку на объект Object2 через конструктор или сеттер. Этот процесс собственно и есть внедрение зависимости. При этом важно помнить, что в Spring объекты необходимо строить на основе интерфейсов, что бы зависимости внедряются в виде интерфейса для возможной последующей замены реализации.

  • вам не надо создавать объекты вручную с помощью оператора new. Эту функцию делегировали контейнеру Spring. Это и есть инверсия контроля (IoC) – передача функции инстанциирования необходимых зависимостей (объектов) контейнеру. Какова роль разработчика во всем этом спросите вы? Объявить компонент, что бы он попал в контекст Spring. Контекст Spring-a по простому – мапа, где находятся все бины. Когда говорят, что бин находиться в контексте спринга - считай, что бин лежит в мапе, а спринг знает key, чтоб его достать из мапы. Все, что отмечено как бин в xml конфигурации или в классах анотациями @Component - инстанциируется и кладется в мапу вида Map<key,bean> map, т.е. у контейнера есть мапа, где он «складирует» все бины (ключевое понятие в Spring – бин, это управляемая контейнером сущность. Для того, чтобы бин (обычный класс) стал управляемым, он должен попасть в контекст спринга.) и при необходимости внедрения, контейнер делает примерно следующее: map.get(key), в качестве key выступает тип поля;

  • Spring освобождает не только от необходимости создавать объекты, но и связывать их. Например аннотация @Autowired позволяет автоматически связывать компоненты. Аннотацию спринга @Autowired можно было бы описать по-простому так - дорогой друг, контейнер спринг, посмотри пожалуйста в своей мапе с бинами, нет ли у тебя там класса instanceof or implements того, перед чем я стою. Если есть - дай мне ссылку в поле, перед которым я объявлена. Автоматическое связывание позволяет уменьшить количество кода при определении зависимостей компонентов;

  • в Spring настройки компонентов отделены от программного кода. Вынесение конфигурации (управление зависимостями) в отдельный файл облегчает последующие изменения в проекте (замена реализаций):


    • улучшенная возможность тестирования. Когда классы проектируются дна основе DI и интерфейсов, становится возможной простая замена зависимостей (фейковыми реализациями) при тестировании;

    • возможность программирования в декларативном стиле с помощью аннотаций уменьшает количество кода в приложении;

    • поддержка и хорошая интеграция с технологиями доступа к данным, транзакциями, AOP упрощает разработку;

    • хорошее документирование очень помогает при отладке приложения;
Тем, кто хочет разобраться со Spring, советую к прочтению К.Уоллс. Spring в действии - 3-е издание и, конечно, официальную документацию.
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Rihard1985 Уровень 33 Master
13 ноября 2018
Вот учишь ты все фишки ООП и вдруг появляется Спринг и все рушит, когда начинаешь читать подходы во фреймворке диву даешься почему не могли до этого раньше додуматься, хотя тебе казалось раньше все идеальным. Основа Спринга внедрение зависимостей и аспектно-ориентированное программирование.
24 февраля 2018
хорошо бы обучалку по Spring, можно совсем простую, чтоб в общем суть уловить