Созданный вручную HTTP-фреймворк: поддержка Sprng MVC, IOC, AOP, перехватчики, чтение файла конфигурации...

Java Spring

GitHub.com/snail Climb/…: облегченная структура HTTP, которая имитирует Spring Boot, но отличается от Spring Boot.

Прошло полмесяца с тех пор, как я в последний раз сообщал друзьям о завершении упрощенной версии "Spring Boot". Время летит так быстро!

01

За последние две недели моя структура HTTP поддерживала такие функции, как АОП, перехватчик (также разновидность АОП) и чтение файла свойств.👏

В настоящее время вся структура HTTP в основном имеет все функции, которые я изначально хотел реализовать. Это тоже можно расценивать как исполнение обещания, и начало и конец хорошие.

Конкретная реализация функции выглядит следующим образом:

Многие читатели могут подумать, что мне легче писать. Однако, если честно, я тоже столкнулся со многими проблемами в процессе написания. Чтобы решить некоторые проблемы, возникающие при написании этого фреймворка, я не спал много ночей и вставал много раз раньше.

Я не фанатик. Обычно я играю в King of Glory несколько игр после 9:30 вечера и ложусь спать около 12:00. Утром я обычно встаю около 8 утра. Почти каждый день.

Однако при написании этого HTTP-фреймворка я помню, как 3 раза не спал до 2 часов ночи. Есть 2 утра, из-за "вдохновения" я встал в 5:00, чтобы написать код.

Я говорю это не для того, чтобы заставить людей почувствовать, как усердно я пишу, и не для того, чтобы показать, как усердно я работаю.

Это все очень распространенный опыт! Я думаю, что большинство программистов испытали:

  • Глубокой ночью вдруг что-то не так с кодом, который я написал, и я не хочу спать, пока не решу это.
  • Однажды утром я внезапно проснулся, охваченный вдохновением, включил компьютер и начал писать код.

Тем не менее, я действительно не рекомендую ложиться спать поздно! Что касается меня, то каждый раз, когда я поздно ложусь спать, я теряю энергию на следующий день или даже на третий день, что серьезно повлияет на мою эффективность. Это лишь краткосрочное воздействие позднего ночного отдыха, если у вас есть нездоровая длительная работа и отдых, это определенно будет особенно вредно для организма.

Я понимаю правду, но большинство из них, как и я, иногда не спят всю ночь.

02

Структура каталогов всего фреймворка выглядит следующим образом:

  • Часть реализации фреймворка организована в соответствии с различными функциональными модулями, что более интуитивно понятно.
  • Предоставляется полный пример использования фреймворка, а также для него пишутся тесты.

03

Прелесть открытого исходного кода в том, что другие могут оставить отзыв о вашем проекте, а если вы встретите друзей, которым интересен ваш проект, они помогут вам вместе улучшать и развивать проект.

Возьмем, к примеру, jsoncat. После того, как исходный код jsoncat был открыт, в разработке принял участие старик по имени «hellohello-tom».

Код Тома очень хорошо написан, помогая jsoncat реализовать множество функций! Большое тебе спасибо! люблю тебя! братан!

Мы часто общаемся в WeChat из-за этого проекта, может в этом прелесть программирования! Хахаха!

Обычно я не общаюсь в WeChat, но из-за этого проекта с открытым исходным кодом я много общался со своим братом.

Только что сделал два снимка:

Я думаю, что более табу разрабатывать проект только самому. У всех есть ограничения, и трудно увидеть, где ваш код нуждается в улучшении, а где есть проблемы.

Это также объясняет, почему проверка кода так важна в процессе разработки программного обеспечения.

Проверка кода может быть очень эффективной для улучшения общего качества кода, потому что помогает нам обнаружить неприятные запахи и возможные проблемы в коде.

04

На самом деле, простая реализация функции не занимает слишком много времени.Большую часть времени я тратил на рефакторинг существующего кода.

В конце концов, одна из основных целей моего фреймворка HTTP с открытым исходным кодом — учиться у моих друзей, которым это нужно, я должен обеспечить читабельность кода, который я пишу.​

С этой целью я поставил себе следующие принципы в процессе написания кода:

  1. Держите все просто: можно использовать наименьший кодпиши понятноФункция не должна использовать более одной строки кода.
  2. Не злоупотребляйте шаблонами проектирования: Когда я впервые писал код, мне особенно нравилось злоупотребление шаблонами проектирования. Если вы изучите какой-либо шаблон проектирования, вы сможете сразу же использовать его в собственном проекте, даже если этот шаблон проектирования не подходит для текущего бизнес-сценария. Это действительно плохая привычка, однако я намеренно избегал этой проблемы при написании этого HTTP-фреймворка. В настоящее время вся структура использует только одноэлементный шаблон, шаблон фабрики, шаблон стратегии и шаблон цепочки ответственности.
  3. Следите за чистотой структуры кода: открытый исходный код написан для того, чтобы люди могли его видеть, а четкая структура кода может значительно упростить понимание кода другими людьми.
  4. Осторожно извлеките инструменты: Когда я впервые написал этот фреймворк, я нарисовал множество классов инструментов. В конце концов я обнаружил, что методы во многих классах инструментов на самом деле используются только в одном месте и могут использоваться только в этом месте в будущем. В настоящее время я думаю, что лучший способ — поместить эти методы служебного класса в единственный класс, который использует этот метод. Это сделает общую структуру кода более понятной.
  5. Не демонстрировать навыки: Когда я впервые начал писать код, мне особенно нравилось показывать навыки. Например, когда Java 8 не была популярна, я всегда думал об использовании лямбда-выражений Java 8, функциональных интерфейсов и других новых возможностей при написании кода. В то время, когда я работал над проектом со своим учителем, другие одноклассники все еще думали, что мое письмо было особенно потрясающим, потому что они думали, что им нужно много времени, чтобы понять. Однако теперь я чувствую, что практика того времени на самом деле отличалась от сути разработки/программирования программного обеспечения.Суть программирования не в том, чтобы уменьшить количество кода, а в том, чтобы написать код, который другим будет легко понять и написать система, которую легче обслуживать. Код, который вы пишете, предназначен не только для вас, но и для понимания другими, что снижает стоимость чтения и обучения для других. Это не противоречит всему, что я сказал в первом пункте.

Давайте просто поговорим об этом сегодня! Еще не рано!

Мои рекомендации по проектам с открытым исходным кодом

  1. JavaGuide: «Java Learning + Interview Guide» охватывает основные знания, которые необходимо освоить большинству Java-программистов. Подготовьтесь к собеседованиям по Java с помощью JavaGuide!
  2. guide-rpc-framework: Пользовательская структура RPC, реализованная Netty+Kyro+Zookeeper (Специальная структура RPC, реализованная Netty+Kyro+Zookeeper — с подробным процессом реализации и соответствующими руководствами).
  3. jsoncat: облегченная структура HTTP, которая имитирует Spring Boot, но отличается от Spring Boot.
  4. programmer-advancement: Несколько хороших привычек, которые должны быть у программиста + обязательные к прохождению интервью!
  5. springboot-guide: Не только Spring Boot, но и важные знания Spring
  6. awesome-java: Коллекция потрясающих Java-проектов на Github.