15 октября 2020 года я имел честь участвовать в прямом эфире технического сообщества Nuggets, где в качестве основного докладчика поделился с друзьями некоторым контентом о Spring. Контент, представленный на этот раз, в основном основан на обзоре, в основном, чтобы помочь друзьям понять идеи изучения Spring и дальнейшего планирования после изучения среды Spring.
Написание этой статьи в основном для записи контента, которым поделились в тот день, а также некоторых последующих обзоров и т. Д., Чтобы помочь друзьям, которые не догнали машину.
[Прямое воспроизведение станции B:WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO непосредственно прямо пропорционально вам】
Насколько важен Spring в экосистеме разработки Java?
Раз уж мы говорим о Spring, нам еще нужно знать его статус и вес. Статус весны, должно быть, достиг 2020 года, и друзья очень ясны.
Spring делает Java проще
На официальном сайте Springspring.io, первое, что мы видим, это официальное описание Spring в Spring:
Spring makes Java simple.modern.productive.reactive.cloud-ready.
Spring делает разработку Java простой и современной и позволяет писать приложения производственного уровня, реактивные приложения, а также поддерживает облачные приложения.
В том числе то, что может сделать Spring, также указано на домашней странице ниже:
Видно, что Spring представляет собой не только фреймворк/технологию, но и целую экосистему.
Весна – экологическая
Откройте обзор проекта на официальном сайте Springspring.io/projects, мы обнаружим, что внутри так много проектов!
Двумя лучшими репрезентативными работами являются SpringBoot, самый популярный базовый фреймворк для создания серверных сервисов на данном этапе, и его базовая SpringFramework:
Прокрутите вниз и оSpringData для уровня доступа к данным, заКомплексное решение для разработки микросервисов SpringCloud, заSpringSecurity для решения проблемы безопасности разрешений, заРешить SpringSession, внешний по отношению к сеансуПодождите, это все решения в экосистеме Spring.
Весна широко используется
Если это просто официальный удар, то он явно не очень убедителен.Давайте посмотрим на основные и популярные проекты с открытым исходным кодом и какие базовые фреймворки они используют.
Откройте проект с открытым исходным кодом облака кодаgit ee.com/explore/80%…, посмотрите, на чем построены эти популярные системы фонового управления:
Видно, что эти проекты с открытым исходным кодом основаны на Spring/SpringBoot! Это достаточно убедительно.Даже основные и популярные проекты построены с помощью Spring, чего достаточно, чтобы показать, что Spring действительно достаточно мощен.
Весна - частый интервьюер
Последний пункт касается интервью. Всегда было легко спрашивать о структуре Spring на собеседованиях, и в последние годы сложность возросла. На сколько из следующих вопросов вы можете ответить:
- Как понять IOC в Spring?
- Каковы стадии жизненного цикла фасоли?
- Как Spring обрабатывает циклические зависимости?
- При каких обстоятельствах транзакция Spring терпит неудачу?
- Рабочий процесс DispatcherServlet?
На эти вопросы есть соответствующие ответы в буклете Spring и буклете SpringBoot. В буклете обобщаются многие вопросы для интервью. Если ваши друзья готовятся к интервью, буклет станет для вас надежной подготовкой.
Как освоить Spring во всех аспектах
Итак, поскольку Spring так важен, как мы должны изучать и осваивать среду Spring во всех аспектах?
Вкратце, мы можем разделить исследование на 4 части:
IOC
Часть IOC — самая мощная и сложная часть всего фреймворка Spring, в ней слишком много точек знаний, можно кратко их перечислить:
- Идея и реализация МОК
- Две реализации IOC — это поиск зависимостей и внедрение зависимостей.
- Как реализовать поиск зависимостей и внедрение зависимостей и какие существуют методы кодирования?
- Регистрация бина, создание, сборка и т.д.
- Тип компонента и область применения
- Как создать и собрать бобы
- сканирование компонентов
- Beans и BeanDefinitions
- Как создаются определения компонентов
- Как BeanDefinition работает с контейнером IOC для создания экземпляров компонента
- Управление событиями, управление ресурсами, постпроцессор
- Bean, жизненный цикл контейнера IOC
- ......
Все эти точки знаний будут освещены в буклете «Углубленное изучение Spring с нуля», и сложность будет возрастать, включая краткое изложение вопросов интервью.
АОП и транзакции
Помимо IOC, двумя ядрами Spring являются АОП. Мы все знаем, что основной базовой реализацией АОП является динамический прокси, так как он реализуется, как писать аспекты АОП и реализация АОП в Spring: управление транзакциями, как это используется, как программно/декларативно/конфигурация Добавление транзакций в стиле стиля и то, как он реализует управление транзакциями в нижней части, следует изучить в разделе АОП и транзакция.
Содержание этого раздела можно условно разделить на следующее:
- АОП и динамические прокси
- jdk / Cglib
- Внедрение и применение АОП
- печать журнала
- Перехват разрешения
- управление транзакциями
- Добавить транзакцию программно/декларативно/конфигурационно
- Поведение распространения транзакции
- Базовое ядро АОП и управления транзакциями
- Как АОП создает прокси-объекты
- Как диспетчер транзакций управляет транзакциями открытия/фиксации/отката
Web
Большинству людей нравится отделять Spring от SpringMVC, но если быть точным, SpringMVC является частью среды Spring, а с момента появления Spring 5 у SpringMVC есть брат-близнец SpringWebFlux, поэтому SpringMVC также называется SpringWebMvc.
Точно так же модуль Spring in the Web также является тяжелым ударом.Эта часть контента в основном сосредоточена на следующих ключевых моментах:
- Веб-инженерия Spring Integration
- SpringWebMvc
- Написание и использование контроллера
- привязка параметра
- Проверка данных
- глобализация
- перехватчик
- Механизм работы, процесс и принцип работы основных компонентов в WebMvc
- DispatcherServlet
- HandlerMapping
- HandlerAdapter
- ViewResolver
- ......
Поскольку SpringWebFlux используется немногими, и его относительно сложно понять, мы просто упомянем его здесь.Если ваши друзья освоили SpringWebMvc, вы можете попробовать узнать о WebFlux.
Интегрировать
Если это только потому, что среда Spring сама по себе мощная, этого недостаточно, чтобы взять на себя инициативу в разработке всего JavaWeb.Его превосходная и мощная способность интегрировать сторонние технологии, безусловно, является неотъемлемой частью. Вообще говоря, наиболее известные технологии, с которыми мы столкнулись, почти все интегрированы с инфраструктурой Spring.
Есть много технологий, с которыми мы знакомы:
- Структура уровня сохраняемости данных: MyBatis, Hibernate
- Промежуточное ПО кэширования: Redis, MongoDB
- Промежуточное ПО для сообщений: RabbitMQ, Kafka
- Поисковая система: ElasticSearch, Solr
- ......
Изучая эти методы, не забудьте, кстати, узнать о его интеграции со Spring.
идеи обучения
Для изучения фреймворка Spring автор может предложить две идеи:
горизонтальное обучение
- Первый этап
- Сначала изучите базовое содержание, связанное с частью IOC в Spring.
- В том числе реализация IOC, способ внедрения зависимостей
- Тип компонента, объем, метод создания, управление жизненным циклом и т. д.
- Затем изучите основы части АОП
- Освежение информации о динамических прокси
- Научитесь писать аспекты АОП в xml/аннотациях и т.д.
- Далее идут основы транзакционной части
- Как Spring интегрирует jdbc
- Использование JdbcTemplate
- Как использовать программные транзакции, декларативные транзакции
- Наконец-то изучите основы SpringWebMvc.
- Включая запись контроллера, привязку параметров, ответ json, перехватчики и т.д.
- Изучив эти основные части, вы в основном освоили базовые знания Spring, которые могут работать с большинством реальных сценариев кодирования.
- Сначала изучите базовое содержание, связанное с частью IOC в Spring.
- последующая стадия
- Изучите продвинутые и продвинутые знания IOC, AOP, транзакций, Web и других модулей по очереди.
- Этот послойный подход можно назвать«Уровень обучения»
вертикальное обучение
- Первый этап
- Или сначала изучите основы IOC
- Реализация IOC, внедрение зависимостей
- Тип компонента, объем, метод создания, управление жизненным циклом и т. д.
- Затем перейдите к углубленным знаниям раздела IOC.
- Включая дизайн и продумывание контейнера IOC
- Сборка компонентов, сканирование компонентов
- управляемый событиями
- Управление ресурсами, файлы ресурсов и т. д.
- Продолжайте изучать расширенный контент раздела IOC
- Бин, БинОпределение
- BeanFactory, BeanDefinitionRegistry
- постпроцессор
- глубоко на дне
- После завершения этого этапа обучения можно сказать, что вы в основном освоили все основные знания модуля Spring IOC.
- Или сначала изучите основы IOC
- последующая стадия
- Продолжайте изучать различные уровни АОП, транзакций и веб-модулей в указанном порядке.
- В этом подмодульном обучении каждый модуль представляет собой идею обучения от поверхностного до глубокого, которую можно назвать«Вертикальное обучение»
Выберите один из двух методов и идей в соответствии с вашим стилем обучения, мышлением и привычками.
Эти две идеи одинаково применимы при изучении не только Spring, но и других фреймворков/технологий.
Как составить среднесрочное и долгосрочное планирование после освоения Spring
После изучения Spring Framework, следующее планирование также имеет решающее значение. Самоочевидно, что для всей карьеры важно иметь четкое представление о том, где вы находитесь в настоящее время, и сформулировать среднесрочный и долгосрочный план для собственной ситуации. Автор здесь только для того, чтобы дать несколько руководящих указаний, чтобы помочь друзьям разобраться в себе.
- Если Spring — ваш первый фреймворк для изучения / только что закончил SSM
- Тогда лучше сначала остановиться, закрепить эту часть знаний и найти реальный проект/требование для этого, и испытать ощущение развития проекта, кстати, базовые знания за это время закрепятся.
- Если сам фреймворк Spring хорошо понимает
- Последующие планы могут быть связаны с экологией Spring. SpringBoot — очень хороший выбор, потому что SpringBoot полностью построен на платформе Spring. Он в полной мере использует базовый механизм проектирования Spring и расширяет некоторые новые механизмы (такие как автоматическая сборка, новый постпроцессор и т. д.). )
- Если Spring и SpringBoot в основном освоены
- Тогда среднесрочное и долгосрочное планирование можно начать с двух маршрутов.
- Или продолжайте атаковать микросервисные решения SpringCloud, чтобы понять и попрактиковаться в разработке микросервисов.
- Или изучите основное промежуточное ПО с открытым исходным кодом (Redis, RabbitMQ, ElasticSearch и т. д.), чтобы расширить спектр технологий.
Q&A
Для студентов, которые еще не закончили учебу, нужно ли осваивать SpringCloud перед стажировкой?
Ответ: нет.
Причина: Для молодых партнеров, которые только выходят на работу, компания больше ценит ваши базовые навыки, базовые навыки прочные и пластичность не помешает. Итак, постарайтесь сделать свои основы как можно более надежными (JavaSE, JavaWeb, базовые фреймворки и т. д.).
В каких сценариях происходит сбой АОП
Ответ: обычно происходит на этапе инициализации постпроцессора.
Обоснование: обратитесь к главе 34 и главу 48 буклета (последующие обновления).
Исходный код JavaSE немного сложно читать, есть ли хороший способ?
Ответ: Вы можете обратиться к проекту Learningjdk с открытым исходным кодом.
Нужно ли вам изучать Servlet перед изучением SpringBoot и Cloud?
Ответ: Требуется.
Причина: Брат деи, если вы даже не понимаете HttpServletRequest и HttpServletResponse, когда вы изучаете функции SpringBoot для разработки веб-сценариев, не будет ли это просто отменено? Знание сервлетов является основой JavaWeb, SpringWebMvc построен поверх JavaWeb, а SpringBoot интегрирует SpringWebMvc, поэтому, согласно этой зависимости, Servlet, конечно, является обязательным элементом для изучения, и это базовый элемент для изучения.
Как продвинутые знания о фреймворках лучше запоминаются
Ответ: Больше пишите, больше используйте и больше практикуйтесь.
Маленькие друзья, спросите себя, вы впервые изучили эти фреймворки, знания и т. д., и обнаружили, что есть такие высокоуровневые знания, вы их изучили, вау, я офигенный, я вылетел прямо из Вуху! Однако действительно ли вы использовали его в реальных сценариях? Для тех, кто занимается развитием, знания - это не то, что вы можете запомнить после того, как выучили их. Вы должны больше практиковаться. Нет короткого пути к этому обучению. За мастерством, которое вы видите, стоит много усилий.
напиши в конце
Участвуя в живом обмене в первый раз, подготовка на ранней стадии также относительно ограничена.Неизбежны некоторые упущения или недостаточное общение.Пожалуйста, поправьте меня. Друзья могут найти меня, присоединившись к группе прямого обмена Nuggets или по электронной почте.LinkedBear@163.comСвяжитесь со мной. Если будет возможность в будущем, я продолжу участвовать в прямом эфире наших Наггетсов, и продолжу делиться и обмениваться технологиями, связанными со Spring и экологией, со своими друзьями.
Наконец, спасибо за вашу поддержку, и спасибо официальному персоналу Nuggets за их усердную работу, все усердно работали!