До весны еще далеко - записано в первом прямом эфире "Наггетс"

Spring
До весны еще далеко - записано в первом прямом эфире "Наггетс"

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, AOP, транзакций, Web и других модулей по очереди.
    • Этот послойный подход можно назвать«Уровень обучения»

вертикальное обучение
  • Первый этап
    • Или сначала изучите основы IOC
      • Реализация IOC, внедрение зависимостей
      • Тип компонента, объем, метод создания, управление жизненным циклом и т. д.
    • Затем перейдите к углубленным знаниям раздела IOC.
      • Включая дизайн и продумывание контейнера IOC
      • Сборка компонентов, сканирование компонентов
      • управляемый событиями
      • Управление ресурсами, файлы ресурсов и т. д.
    • Продолжайте изучать расширенный контент раздела IOC
      • Бин, БинОпределение
      • BeanFactory, BeanDefinitionRegistry
      • постпроцессор
      • глубоко на дне
    • После завершения этого этапа обучения можно сказать, что вы в основном освоили все основные знания модуля Spring 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 с открытым исходным кодом.

GitHub.com/Здоровье для…

Нужно ли вам изучать Servlet перед изучением SpringBoot и Cloud?

Ответ: Требуется.

Причина: Брат деи, если вы даже не понимаете HttpServletRequest и HttpServletResponse, когда вы изучаете функции SpringBoot для разработки веб-сценариев, не будет ли это просто отменено? Знание сервлетов является основой JavaWeb, SpringWebMvc построен поверх JavaWeb, а SpringBoot интегрирует SpringWebMvc, поэтому, согласно этой зависимости, Servlet, конечно, является обязательным элементом для изучения, и это базовый элемент для изучения.

Как продвинутые знания о фреймворках лучше запоминаются

Ответ: Больше пишите, больше используйте и больше практикуйтесь.

Маленькие друзья, спросите себя, вы впервые изучили эти фреймворки, знания и т. д., и обнаружили, что есть такие высокоуровневые знания, вы их изучили, вау, я офигенный, я вылетел прямо из Вуху! Однако действительно ли вы использовали его в реальных сценариях? Для тех, кто занимается развитием, знания - это не то, что вы можете запомнить после того, как выучили их. Вы должны больше практиковаться. Нет короткого пути к этому обучению. За мастерством, которое вы видите, стоит много усилий.


напиши в конце

Участвуя в живом обмене в первый раз, подготовка на ранней стадии также относительно ограничена.Неизбежны некоторые упущения или недостаточное общение.Пожалуйста, поправьте меня. Друзья могут найти меня, присоединившись к группе прямого обмена Nuggets или по электронной почте.LinkedBear@163.comСвяжитесь со мной. Если будет возможность в будущем, я продолжу участвовать в прямом эфире наших Наггетсов, и продолжу делиться и обмениваться технологиями, связанными со Spring и экологией, со своими друзьями.

Наконец, спасибо за вашу поддержку, и спасибо официальному персоналу Nuggets за их усердную работу, все усердно работали!