HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><strong>Spring - один из самых популярных фреймворков для Java. Расскажем, как устроен Spring, чем он хорош и сколько зарабатывают разработчики, владеющие этим фреймворком.</strong></p>
1 <p><strong>Spring - один из самых популярных фреймворков для Java. Расскажем, как устроен Spring, чем он хорош и сколько зарабатывают разработчики, владеющие этим фреймворком.</strong></p>
2 <blockquote><p>В написании статьи принял участие<a>Антон Ефимов</a>, Senior Software engineer</p>
2 <blockquote><p>В написании статьи принял участие<a>Антон Ефимов</a>, Senior Software engineer</p>
3 </blockquote><h2>Содержание</h2>
3 </blockquote><h2>Содержание</h2>
4 <ul><li><a>Что такое Spring и зачем он нужен</a></li>
4 <ul><li><a>Что такое Spring и зачем он нужен</a></li>
5 <li><a>Использование Spring Framework</a></li>
5 <li><a>Использование Spring Framework</a></li>
6 <li><a>Как устроен фреймворк Spring</a></li>
6 <li><a>Как устроен фреймворк Spring</a></li>
7 <li><a>Сколько зарабатывают Spring-программисты</a></li>
7 <li><a>Сколько зарабатывают Spring-программисты</a></li>
8 <li><a>Преимущества Spring</a></li>
8 <li><a>Преимущества Spring</a></li>
9 <li><a>Недостатки Spring</a></li>
9 <li><a>Недостатки Spring</a></li>
10 <li><a>Небольшой экскурс в историю: как появился Spring</a></li>
10 <li><a>Небольшой экскурс в историю: как появился Spring</a></li>
11 <li><a>Принципы Spring</a></li>
11 <li><a>Принципы Spring</a></li>
12 <li><a>Как начать пользоваться Spring Framework</a></li>
12 <li><a>Как начать пользоваться Spring Framework</a></li>
13 </ul><h2>Что такое Spring и зачем он нужен</h2>
13 </ul><h2>Что такое Spring и зачем он нужен</h2>
14 <p>Сегодня<a>Java</a>- один из самых распространенных языков программирования в веб-разработке. Но изначально в нем было недостаточно возможностей для создания модульных приложений. Для решения этой проблемы был создан фреймворк Spring.</p>
14 <p>Сегодня<a>Java</a>- один из самых распространенных языков программирования в веб-разработке. Но изначально в нем было недостаточно возможностей для создания модульных приложений. Для решения этой проблемы был создан фреймворк Spring.</p>
15 <p><strong><a>Spring</a></strong>- фреймворк с открытым исходным кодом, написанный на Java. Его можно использовать для разработки на всех этих языках.</p>
15 <p><strong><a>Spring</a></strong>- фреймворк с открытым исходным кодом, написанный на Java. Его можно использовать для разработки на всех этих языках.</p>
16 <p>Spring предоставляет огромный набор инструментов и библиотек, которые упрощают и ускоряют процесс разработки, позволяя сосредоточиться на бизнес-логике приложения.</p>
16 <p>Spring предоставляет огромный набор инструментов и библиотек, которые упрощают и ускоряют процесс разработки, позволяя сосредоточиться на бизнес-логике приложения.</p>
17 <blockquote><p>Начинать изучение Spring и работу с фреймворком рекомендуется после освоения основ программирования на Java. Это можно сделать<a>на подготовительных курсах Хекслета</a>. В программу включено много теоретических и практических заданий, которые выполняются в браузерном тренажере. Вы изучите основные понятия программирования, научитесь мыслить как разработчики, исправлять ошибки в коде, а еще создадите свою первую программу.</p>
17 <blockquote><p>Начинать изучение Spring и работу с фреймворком рекомендуется после освоения основ программирования на Java. Это можно сделать<a>на подготовительных курсах Хекслета</a>. В программу включено много теоретических и практических заданий, которые выполняются в браузерном тренажере. Вы изучите основные понятия программирования, научитесь мыслить как разработчики, исправлять ошибки в коде, а еще создадите свою первую программу.</p>
18 </blockquote><h2>Использование Spring Framework</h2>
18 </blockquote><h2>Использование Spring Framework</h2>
19 <p>Фреймворк Spring программисты создали для написания бэкенда в веб-разработке. Но используют его во многих проектах как для создания десктопных, так и мобильных приложений. Почти всегда это энтерпрайз, то есть, создание крупных корпоративных порталов.</p>
19 <p>Фреймворк Spring программисты создали для написания бэкенда в веб-разработке. Но используют его во многих проектах как для создания десктопных, так и мобильных приложений. Почти всегда это энтерпрайз, то есть, создание крупных корпоративных порталов.</p>
20 <p>С помощью Spring разработчики могут быстро создавать масштабируемые и надежные приложения, а также использовать преимущества таких технологий, как Spring Boot, Spring Data и Spring Security.</p>
20 <p>С помощью Spring разработчики могут быстро создавать масштабируемые и надежные приложения, а также использовать преимущества таких технологий, как Spring Boot, Spring Data и Spring Security.</p>
21 <p>Ключевая особенность Spring - в разнообразии возможностей. Это не один фреймворк, а целый набор готовых решений. В его состав входят дополнительные модули и библиотеки, которые совместно работают и регулярно пополняются.</p>
21 <p>Ключевая особенность Spring - в разнообразии возможностей. Это не один фреймворк, а целый набор готовых решений. В его состав входят дополнительные модули и библиотеки, которые совместно работают и регулярно пополняются.</p>
22 <p>Также Spring помогает писать код в парадигме аспектно-ориентированного программирования, но об этом мы поговорим позже.</p>
22 <p>Также Spring помогает писать код в парадигме аспектно-ориентированного программирования, но об этом мы поговорим позже.</p>
23 <h2>Как устроен фреймворк Spring</h2>
23 <h2>Как устроен фреймворк Spring</h2>
24 <p>Разберем популярные модули и компоненты Spring Framework, которые особенно полюбились Java-разработчикам.</p>
24 <p>Разберем популярные модули и компоненты Spring Framework, которые особенно полюбились Java-разработчикам.</p>
25 <h3>IoC - Inversion of Control</h3>
25 <h3>IoC - Inversion of Control</h3>
26 <p>Это базовый модуль Spring Framework, который отвечает за управление зависимостями. С его помощью можно объединить модули проекта в единую архитектуру. Ключевая особенность IoC состоит в том, что мы только предоставляем нужные зависимости контейнеру, которые потом автоматически подставляются в нужные места.</p>
26 <p>Это базовый модуль Spring Framework, который отвечает за управление зависимостями. С его помощью можно объединить модули проекта в единую архитектуру. Ключевая особенность IoC состоит в том, что мы только предоставляем нужные зависимости контейнеру, которые потом автоматически подставляются в нужные места.</p>
27 <p>Благодаря технологии Dependency lnjection зависимости хранятся не в объектах, а в отдельных контейнерах. Это позволяет с легкостью вносить изменения в проект: взаимодействие между компонентами не будет нарушено.</p>
27 <p>Благодаря технологии Dependency lnjection зависимости хранятся не в объектах, а в отдельных контейнерах. Это позволяет с легкостью вносить изменения в проект: взаимодействие между компонентами не будет нарушено.</p>
28 <h3>Аспектно-ориентированное программирование</h3>
28 <h3>Аспектно-ориентированное программирование</h3>
29 <p>Аспектно-ориентированное программирование (АОП) в Spring основано на концепции разделения бизнес-логики и аспектов, таких как безопасность, обработка ошибок. АОП позволяет добавлять эти аспекты в код без изменения его основной структуры, что потом упрощает внесение исправлений в приложение.</p>
29 <p>Аспектно-ориентированное программирование (АОП) в Spring основано на концепции разделения бизнес-логики и аспектов, таких как безопасность, обработка ошибок. АОП позволяет добавлять эти аспекты в код без изменения его основной структуры, что потом упрощает внесение исправлений в приложение.</p>
30 <p>Spring поддерживает АОП через механизм AspectJ, который позволяет создавать аспекты, описывающие дополнительные функции, и применять их к требуемым классам или методам. Например, можно создать аспект, который будет обрабатывать исключения, возникающие в определенном методе, без необходимости изменять этот метод.</p>
30 <p>Spring поддерживает АОП через механизм AspectJ, который позволяет создавать аспекты, описывающие дополнительные функции, и применять их к требуемым классам или методам. Например, можно создать аспект, который будет обрабатывать исключения, возникающие в определенном методе, без необходимости изменять этот метод.</p>
31 <p>Для использования АОП в Spring необходимо определить аспекты и указать, к каким классам или методам они должны применяться. Это можно сделать с помощью аннотаций или конфигурационных файлов. Также можно выбрать, чтобы Spring добавлял аспекты во время компиляции приложения.</p>
31 <p>Для использования АОП в Spring необходимо определить аспекты и указать, к каким классам или методам они должны применяться. Это можно сделать с помощью аннотаций или конфигурационных файлов. Также можно выбрать, чтобы Spring добавлял аспекты во время компиляции приложения.</p>
32 <h3>Доступ к данным</h3>
32 <h3>Доступ к данным</h3>
33 <p>Этот модуль состоит из нескольких библиотек. Их использование дает возможность интегрировать код на Java с базами данных. С помощью фреймворка можно наладить взаимодействие, чтобы программа могла получить доступ к хранилищу информации, и он был безопасным.</p>
33 <p>Этот модуль состоит из нескольких библиотек. Их использование дает возможность интегрировать код на Java с базами данных. С помощью фреймворка можно наладить взаимодействие, чтобы программа могла получить доступ к хранилищу информации, и он был безопасным.</p>
34 <p>Фреймворк работает на основе стандарта Java DataBase Connectivity. Эта технология помогает соединить базу данных через драйвер с использованием уникального URL.</p>
34 <p>Фреймворк работает на основе стандарта Java DataBase Connectivity. Эта технология помогает соединить базу данных через драйвер с использованием уникального URL.</p>
35 <p>Один из подходов, который используется для упрощения работы с реляционными базами данных в рамках объектно-ориентированного программирования, это ORM. В Spring также есть другие возможности, как например Data Access Object.</p>
35 <p>Один из подходов, который используется для упрощения работы с реляционными базами данных в рамках объектно-ориентированного программирования, это ORM. В Spring также есть другие возможности, как например Data Access Object.</p>
36 <h3>Транзакции</h3>
36 <h3>Транзакции</h3>
37 <p>Транзакции - это последовательность операций, выраженная через несколько запросов, которые должны быть выполнены атомарно: то есть либо все, либо ни одна. Система собирает несколько запросов в один и отправляет их в базу данных.</p>
37 <p>Транзакции - это последовательность операций, выраженная через несколько запросов, которые должны быть выполнены атомарно: то есть либо все, либо ни одна. Система собирает несколько запросов в один и отправляет их в базу данных.</p>
38 <p>У Spring Framework есть инструменты для безопасной работы с транзакциями. Этот модуль гарантирует сохранность данных и поддержку вложенных, локальных и глобальных транзакций.</p>
38 <p>У Spring Framework есть инструменты для безопасной работы с транзакциями. Этот модуль гарантирует сохранность данных и поддержку вложенных, локальных и глобальных транзакций.</p>
39 <h3>MVC</h3>
39 <h3>MVC</h3>
40 <p>Это шаблон для проектирования веб-приложений по системе Model - View - Controller. То есть при создании нового проекта его делят на:</p>
40 <p>Это шаблон для проектирования веб-приложений по системе Model - View - Controller. То есть при создании нового проекта его делят на:</p>
41 <ul><li>Модель - данные, которые использует приложение для своей функциональности.</li>
41 <ul><li>Модель - данные, которые использует приложение для своей функциональности.</li>
42 <li>Отображение - пользовательский интерфейс.</li>
42 <li>Отображение - пользовательский интерфейс.</li>
43 <li>Контроллер - принципы изменения модели в зависимости от действий пользователя.</li>
43 <li>Контроллер - принципы изменения модели в зависимости от действий пользователя.</li>
44 </ul><p>В Spring Framework этот шаблон добавили относительно поздно. Зато этот модуль приобрел много дополнительных функций. Например, возможность привязать функциональность к выбранному интерфейсу, разделение слоев и замену интерфейсов.</p>
44 </ul><p>В Spring Framework этот шаблон добавили относительно поздно. Зато этот модуль приобрел много дополнительных функций. Например, возможность привязать функциональность к выбранному интерфейсу, разделение слоев и замену интерфейсов.</p>
45 <h3>Аутентификация и авторизация</h3>
45 <h3>Аутентификация и авторизация</h3>
46 <p>В Spring модуль аутентификации и авторизации включает в себя несколько компонентов, которые позволяют пользователям проходить аутентификацию и получать доступ к ресурсам в приложении. Вот основные компоненты:</p>
46 <p>В Spring модуль аутентификации и авторизации включает в себя несколько компонентов, которые позволяют пользователям проходить аутентификацию и получать доступ к ресурсам в приложении. Вот основные компоненты:</p>
47 <ul><li><strong>AuthenticationManager</strong>- этот интерфейс позволяет управлять процессом аутентификации, включая проверку учетных данных пользователя и выдачу токена доступа.</li>
47 <ul><li><strong>AuthenticationManager</strong>- этот интерфейс позволяет управлять процессом аутентификации, включая проверку учетных данных пользователя и выдачу токена доступа.</li>
48 <li><strong>UserDetailsService</strong>- этот интерфейс предоставляет информацию о пользователе: имя, пароль, роль. Spring поддерживает реализацию этого интерфейса через JDBC или Hibernate.</li>
48 <li><strong>UserDetailsService</strong>- этот интерфейс предоставляет информацию о пользователе: имя, пароль, роль. Spring поддерживает реализацию этого интерфейса через JDBC или Hibernate.</li>
49 <li><strong>UsernamePasswordAuthenticationToken</strong>- этот класс представляет собой объект, который содержит имя пользователя и пароль для аутентификации.</li>
49 <li><strong>UsernamePasswordAuthenticationToken</strong>- этот класс представляет собой объект, который содержит имя пользователя и пароль для аутентификации.</li>
50 <li><strong>DaoAuthenticationProvider</strong>- этот класс используется для аутентификации пользователя на основе его имени пользователя и пароля. Он использует UserDetailsService для получения информации о пользователе и сравнивает ее с введенными учетными данными.</li>
50 <li><strong>DaoAuthenticationProvider</strong>- этот класс используется для аутентификации пользователя на основе его имени пользователя и пароля. Он использует UserDetailsService для получения информации о пользователе и сравнивает ее с введенными учетными данными.</li>
51 </ul><p>Эти компоненты могут быть использованы для создания системы аутентификации и авторизации на основе ролей в Spring. Например, вы можете создать пользовательский интерфейс для входа, который использует AuthenticationManager для проверки учетных данных пользователя, а затем применяет роли к пользователю с помощью DaoAuthenticationProvider.</p>
51 </ul><p>Эти компоненты могут быть использованы для создания системы аутентификации и авторизации на основе ролей в Spring. Например, вы можете создать пользовательский интерфейс для входа, который использует AuthenticationManager для проверки учетных данных пользователя, а затем применяет роли к пользователю с помощью DaoAuthenticationProvider.</p>
52 <h3>Spring Cloud</h3>
52 <h3>Spring Cloud</h3>
53 <p>Этот модуль отвечает за взаимодействие кода с распределенными системами. Он поддерживает технологии, которые используют центры обработки данных и PaaS-платформы - веб-серверы с инфраструктурой для проектов.</p>
53 <p>Этот модуль отвечает за взаимодействие кода с распределенными системами. Он поддерживает технологии, которые используют центры обработки данных и PaaS-платформы - веб-серверы с инфраструктурой для проектов.</p>
54 <p>В этом модуле представлены решения, которые позволяют сбалансировать нагрузку на сервер, проводить маршрутизацию и наладить обмен данными.</p>
54 <p>В этом модуле представлены решения, которые позволяют сбалансировать нагрузку на сервер, проводить маршрутизацию и наладить обмен данными.</p>
55 <h3>Roo</h3>
55 <h3>Roo</h3>
56 <p>Этот модуль Spring Framework используют для создания бизнес-приложений. На его основе можно создать многофункциональный пользовательский интерфейс.</p>
56 <p>Этот модуль Spring Framework используют для создания бизнес-приложений. На его основе можно создать многофункциональный пользовательский интерфейс.</p>
57 <p>Roo предлагает разработчикам простой и оптимизированный код без системных библиотек и высокого потребления ресурсов.</p>
57 <p>Roo предлагает разработчикам простой и оптимизированный код без системных библиотек и высокого потребления ресурсов.</p>
58 <h3>Integration</h3>
58 <h3>Integration</h3>
59 <p>Этот модуль отвечает за интеграцию с внешними системами, обмен сообщениями внутри приложения и обработку информации из всех источников. Также его можно применять как движок для создания микросервисов.</p>
59 <p>Этот модуль отвечает за интеграцию с внешними системами, обмен сообщениями внутри приложения и обработку информации из всех источников. Также его можно применять как движок для создания микросервисов.</p>
60 <p>У этого модуля есть несколько готовых шаблонов, которые позволяют быстро наладить систему интеграции приложений. Он поддерживает связи с веб-сервисами архитектуры REST и SOAP.</p>
60 <p>У этого модуля есть несколько готовых шаблонов, которые позволяют быстро наладить систему интеграции приложений. Он поддерживает связи с веб-сервисами архитектуры REST и SOAP.</p>
61 <h3>Batch</h3>
61 <h3>Batch</h3>
62 <p>Этот модуль представляет собой платформу, на основе которой создают пакетные приложения. Главное достоинство фреймворка - масштабируемость. Это делает его подходящим и для небольших, и для крупных приложений.</p>
62 <p>Этот модуль представляет собой платформу, на основе которой создают пакетные приложения. Главное достоинство фреймворка - масштабируемость. Это делает его подходящим и для небольших, и для крупных приложений.</p>
63 <p>Но чаще модули применяют для приложений с многократно используемыми функциями. Batch позволяет им эффективно обрабатывать большие объемы информации и управлять ресурсами.</p>
63 <p>Но чаще модули применяют для приложений с многократно используемыми функциями. Batch позволяет им эффективно обрабатывать большие объемы информации и управлять ресурсами.</p>
64 <h3>Spring Boot</h3>
64 <h3>Spring Boot</h3>
65 <p>Этот модуль отвечает за координацию работы всего Spring. В начале разработки фреймворк нужно конфигурировать, что занимает много времени. А<a>Spring Boot</a>позволяет автоматизировать процесс настройки.</p>
65 <p>Этот модуль отвечает за координацию работы всего Spring. В начале разработки фреймворк нужно конфигурировать, что занимает много времени. А<a>Spring Boot</a>позволяет автоматизировать процесс настройки.</p>
66 <p>С помощью модуля можно быстро создавать проекты с использованием стартовых пакетов и разворачивать приложения.</p>
66 <p>С помощью модуля можно быстро создавать проекты с использованием стартовых пакетов и разворачивать приложения.</p>
67 <p>Одна из главных функций Spring Boot - управление зависимостями и загрузка дополнительных модулей. Также он может автоматически настроить базу данных для программы.</p>
67 <p>Одна из главных функций Spring Boot - управление зависимостями и загрузка дополнительных модулей. Также он может автоматически настроить базу данных для программы.</p>
68 <h2>Сколько зарабатывают Spring-программисты</h2>
68 <h2>Сколько зарабатывают Spring-программисты</h2>
69 <p>Spring - одна из самых популярных технологий для разработки корпоративных приложений<a>по данным JetBrains</a>.</p>
69 <p>Spring - одна из самых популярных технологий для разработки корпоративных приложений<a>по данным JetBrains</a>.</p>
70 <p>Его аналоги используют гораздо реже. Фактически эта технология доминирует на рынке программирования на Java.<a>По данным разработчиков JRebel</a>, все альтернативы этого фреймворка вместе взятые имеют меньше пользователей.</p>
70 <p>Его аналоги используют гораздо реже. Фактически эта технология доминирует на рынке программирования на Java.<a>По данным разработчиков JRebel</a>, все альтернативы этого фреймворка вместе взятые имеют меньше пользователей.</p>
71 <p>Можно сделать вывод: если вы хотите заниматься коммерческой разработкой на Java и ищите свой стек технологий, Spring будет самым логичным выбором. С ним будет гораздо легче найти работу в этой сфере, чем с его аналогами.</p>
71 <p>Можно сделать вывод: если вы хотите заниматься коммерческой разработкой на Java и ищите свой стек технологий, Spring будет самым логичным выбором. С ним будет гораздо легче найти работу в этой сфере, чем с его аналогами.</p>
72 <p>На декабрь 2023 года на hh.ru Spring как требуемая технология указана в 2169 вакансиях. Для сравнения - Java указан в 6 429 вакансиях.</p>
72 <p>На декабрь 2023 года на hh.ru Spring как требуемая технология указана в 2169 вакансиях. Для сравнения - Java указан в 6 429 вакансиях.</p>
73 <p><a>"Хабр.Карьера"</a>собрала статистику по заработку программистов в 2023 в зависимости от стека технологий.</p>
73 <p><a>"Хабр.Карьера"</a>собрала статистику по заработку программистов в 2023 в зависимости от стека технологий.</p>
74 <p>Разработчики со знанием Java Spring Framework зарабатывают в зависимости от квалификации:</p>
74 <p>Разработчики со знанием Java Spring Framework зарабатывают в зависимости от квалификации:</p>
75 <ul><li>99 000 рублей - джуны.</li>
75 <ul><li>99 000 рублей - джуны.</li>
76 <li>189 000 рублей - мидлы.</li>
76 <li>189 000 рублей - мидлы.</li>
77 <li>296 000 рублей - сеньоры.</li>
77 <li>296 000 рублей - сеньоры.</li>
78 <li>336 000 рублей - тимлиды.</li>
78 <li>336 000 рублей - тимлиды.</li>
79 </ul><p>Средняя зарплата программиста с этим стеком - 218 000 рублей.</p>
79 </ul><p>Средняя зарплата программиста с этим стеком - 218 000 рублей.</p>
80 <p>Есть отдельная статистика зарплат по Spring Boot. Со знанием этой технологии зарабатывают:</p>
80 <p>Есть отдельная статистика зарплат по Spring Boot. Со знанием этой технологии зарабатывают:</p>
81 <ul><li>102 000 рублей - джуны.</li>
81 <ul><li>102 000 рублей - джуны.</li>
82 <li>193 000 рублей - мидлы.</li>
82 <li>193 000 рублей - мидлы.</li>
83 <li>295 000 рублей - сеньоры.</li>
83 <li>295 000 рублей - сеньоры.</li>
84 <li>312 000 рублей - тимлиды.</li>
84 <li>312 000 рублей - тимлиды.</li>
85 </ul><p>В среднем бэкендеры со знанием Spring Boot зарабатывают 205 000 рублей.</p>
85 </ul><p>В среднем бэкендеры со знанием Spring Boot зарабатывают 205 000 рублей.</p>
86 <h2>Преимущества Spring</h2>
86 <h2>Преимущества Spring</h2>
87 <h3>Универсальность и оптимизация работы</h3>
87 <h3>Универсальность и оптимизация работы</h3>
88 <p>Spring - это масштабная инфраструктура с инструментами буквально на все случаи жизни. В его составе огромное количество модулей, позволяющих решать как стандартные, так и сложные специфические задачи.</p>
88 <p>Spring - это масштабная инфраструктура с инструментами буквально на все случаи жизни. В его составе огромное количество модулей, позволяющих решать как стандартные, так и сложные специфические задачи.</p>
89 <p>Все фреймворки пишут как готовые решения для минимизации рутинных операций. Spring - не исключение. Он предоставляет разработчику целых набор готовых шаблонов и все они экономят время.</p>
89 <p>Все фреймворки пишут как готовые решения для минимизации рутинных операций. Spring - не исключение. Он предоставляет разработчику целых набор готовых шаблонов и все они экономят время.</p>
90 <h3>Большой выбор инструментов</h3>
90 <h3>Большой выбор инструментов</h3>
91 <p>Spring - один из самых разветвленных фреймворков. На его базе можно реализовать практически любое решения. В статье описаны самые популярные модули, но их гораздо больше.</p>
91 <p>Spring - один из самых разветвленных фреймворков. На его базе можно реализовать практически любое решения. В статье описаны самые популярные модули, но их гораздо больше.</p>
92 <h3>Популярность</h3>
92 <h3>Популярность</h3>
93 <p>Spring широко востребован в среде Java-разработчиков. У этого фреймворка огромное комьюнити, исчерпывающая документация и регулярно выходящие дополнения. На нем написаны тысячи крупных проектов, которые требуют поддержки, что делает актуальным изучение Spring.</p>
93 <p>Spring широко востребован в среде Java-разработчиков. У этого фреймворка огромное комьюнити, исчерпывающая документация и регулярно выходящие дополнения. На нем написаны тысячи крупных проектов, которые требуют поддержки, что делает актуальным изучение Spring.</p>
94 <h3>Бесплатность</h3>
94 <h3>Бесплатность</h3>
95 <p>Java называют языком программирования для крупных корпораций. У него есть платные и закрытые инструменты. А Spring распространяют бесплатно, что снижает порог входа и позволяет учить его новичкам.</p>
95 <p>Java называют языком программирования для крупных корпораций. У него есть платные и закрытые инструменты. А Spring распространяют бесплатно, что снижает порог входа и позволяет учить его новичкам.</p>
96 <h2>Недостатки Spring</h2>
96 <h2>Недостатки Spring</h2>
97 <h3>Сложность</h3>
97 <h3>Сложность</h3>
98 <p>Spring - огромная и нагруженная инфраструктура. Перед работой новичку придется внимательно прочесть документацию и разобраться в возможностях фреймворка.</p>
98 <p>Spring - огромная и нагруженная инфраструктура. Перед работой новичку придется внимательно прочесть документацию и разобраться в возможностях фреймворка.</p>
99 <h3>Долгая настройка</h3>
99 <h3>Долгая настройка</h3>
100 - <p>Запуск и адаптация Spring к конкретному проекту птребует много времени. Частично это можно решить, используя Spring Boot.</p>
100 + <p>Запуск и адаптация Spring к конкретному проекту потребует много времени. Частично это можно решить, используя Spring Boot.</p>
101 <h3>Большой объем кода</h3>
101 <h3>Большой объем кода</h3>
102 <p>Используя этот фреймворк, разработчики сталкиваются с необходимостью тщательной оптимизации. Это не проблема технологии как таковой, но на практике проекты на Spring могут содержать много лишнего кода и ненужных зависимостей.</p>
102 <p>Используя этот фреймворк, разработчики сталкиваются с необходимостью тщательной оптимизации. Это не проблема технологии как таковой, но на практике проекты на Spring могут содержать много лишнего кода и ненужных зависимостей.</p>
103 <h2>Небольшой экскурс в историю: как появился Spring</h2>
103 <h2>Небольшой экскурс в историю: как появился Spring</h2>
104 <p>Отсутствие модульности в языке Java не мешало первым программистам, пока не началась эпоха разработки веб-приложений. Для них нужен был дополнительный функционал, поэтому разработчики языка добавили JavaBeans. Это классы, позволяющие объединять несколько объектов в один для лучшей передачи данных.</p>
104 <p>Отсутствие модульности в языке Java не мешало первым программистам, пока не началась эпоха разработки веб-приложений. Для них нужен был дополнительный функционал, поэтому разработчики языка добавили JavaBeans. Это классы, позволяющие объединять несколько объектов в один для лучшей передачи данных.</p>
105 <p>JavaBeans стал популярным инструментом для оптимизации разработки. Но его возможностей также было недостаточно для создания сложных многопользовательских приложений.</p>
105 <p>JavaBeans стал популярным инструментом для оптимизации разработки. Но его возможностей также было недостаточно для создания сложных многопользовательских приложений.</p>
106 <p>Тогда JavaBeans "усилили" новой технологией Enterprise JavaBeans. Она позволяла улучшить процесс сохранения данных и упростила разработку сложных корпоративных приложений.</p>
106 <p>Тогда JavaBeans "усилили" новой технологией Enterprise JavaBeans. Она позволяла улучшить процесс сохранения данных и упростила разработку сложных корпоративных приложений.</p>
107 <p>Но у Enterprise JavaBeans был серьезный недостаток: она делала код чрезмерно сложным. Так что разработчики продолжили искать новое решение, и оно нашлось в 2003 году.</p>
107 <p>Но у Enterprise JavaBeans был серьезный недостаток: она делала код чрезмерно сложным. Так что разработчики продолжили искать новое решение, и оно нашлось в 2003 году.</p>
108 <p>Команда разработчиков Sprinkler - системы для управления контентом - планировала внедрить в Spring широкий функционал: обработку исключений, управление транзакциями, зависимости. Они столкнулись с необходимостью писать большое количество кода с нуля и решили сделать фреймворк на основе своих разработок.</p>
108 <p>Команда разработчиков Sprinkler - системы для управления контентом - планировала внедрить в Spring широкий функционал: обработку исключений, управление транзакциями, зависимости. Они столкнулись с необходимостью писать большое количество кода с нуля и решили сделать фреймворк на основе своих разработок.</p>
109 <p>В 2003 эта команда презентовала тестовую версию Spring Framework, а еще через год случился релиз полностью рабочего ПО. Этот фреймворк быстро занял доминирующее положение на рынке веб-разработки на Java.</p>
109 <p>В 2003 эта команда презентовала тестовую версию Spring Framework, а еще через год случился релиз полностью рабочего ПО. Этот фреймворк быстро занял доминирующее положение на рынке веб-разработки на Java.</p>
110 <h2>Принципы Spring</h2>
110 <h2>Принципы Spring</h2>
111 <p>В основе идеологии этого фреймворка лежит три принципа.</p>
111 <p>В основе идеологии этого фреймворка лежит три принципа.</p>
112 <ul><li><strong>Универсальность</strong>. Если другие фреймворки обычно пишут под определенные решения, то Spring - это фактически платформа для "всего" в Java. На его фундаменте можно написать любые приложения, а его новые модули должны иметь универсальное применение.</li>
112 <ul><li><strong>Универсальность</strong>. Если другие фреймворки обычно пишут под определенные решения, то Spring - это фактически платформа для "всего" в Java. На его фундаменте можно написать любые приложения, а его новые модули должны иметь универсальное применение.</li>
113 <li><strong>Легкость</strong>. Этот фреймворк написан по принципу минимального воздействия. То есть каждый модуль включает в себя только необходимые функции и ничего лишнего. За счет этого готовые решения в Spring проще интегрировать с другими инструментами. А сам код отличает лаконичность.</li>
113 <li><strong>Легкость</strong>. Этот фреймворк написан по принципу минимального воздействия. То есть каждый модуль включает в себя только необходимые функции и ничего лишнего. За счет этого готовые решения в Spring проще интегрировать с другими инструментами. А сам код отличает лаконичность.</li>
114 <li><strong>Интегрированная инфраструктура</strong>. Сильная часть Spring - связи между компонентами. Все технологии в рамках этого инструмента обеспечены хорошим взаимодействием друг с другом. Это сделано за счет инверсии контроля - способа внедрения зависимостей.</li>
114 <li><strong>Интегрированная инфраструктура</strong>. Сильная часть Spring - связи между компонентами. Все технологии в рамках этого инструмента обеспечены хорошим взаимодействием друг с другом. Это сделано за счет инверсии контроля - способа внедрения зависимостей.</li>
115 </ul><h2>Как начать пользоваться Spring Framework</h2>
115 </ul><h2>Как начать пользоваться Spring Framework</h2>
116 <p>На официальном сайте Spring есть<a>руководство по подключению фреймворка</a>. С его помощью вы сможете написать простейшую программу "Hello, World!" на Spring.</p>
116 <p>На официальном сайте Spring есть<a>руководство по подключению фреймворка</a>. С его помощью вы сможете написать простейшую программу "Hello, World!" на Spring.</p>
117 <p>В начале знакомства с фреймворком можно использовать обучающие материалы, которые находятся в свободном доступе, в том числе на официальном сайте - там целая кладезь полезной информации. Есть также русскоязычные сообщества, специализированные сайты и форумы для общения с теми, кто разделяет ваши интересы. Например,<a>Хекслет Комьюнити в Telegram</a>.</p>
117 <p>В начале знакомства с фреймворком можно использовать обучающие материалы, которые находятся в свободном доступе, в том числе на официальном сайте - там целая кладезь полезной информации. Есть также русскоязычные сообщества, специализированные сайты и форумы для общения с теми, кто разделяет ваши интересы. Например,<a>Хекслет Комьюнити в Telegram</a>.</p>
118 <blockquote><p>Начинать изучение Spring и работу с фреймворком рекомендуется после освоения основ программирования на Java. Это можно сделать<a>на подготовительных курсах Хекслета</a>. В программу включено много теоретических и практических заданий, которые выполняются в браузерном тренажере. Вы изучите основные понятия программирования, научитесь мыслить как разработчики, исправлять ошибки в коде, а еще создадите свою первую программу.</p>
118 <blockquote><p>Начинать изучение Spring и работу с фреймворком рекомендуется после освоения основ программирования на Java. Это можно сделать<a>на подготовительных курсах Хекслета</a>. В программу включено много теоретических и практических заданий, которые выполняются в браузерном тренажере. Вы изучите основные понятия программирования, научитесь мыслить как разработчики, исправлять ошибки в коде, а еще создадите свою первую программу.</p>
119 </blockquote>
119 </blockquote>