Эта статья изначально была статьей в моей платной колонке.Я обнаружил, что многие люди будут платить за чтение этой статьи, поэтому я решил поделиться ею бесплатно, надеясь распространить ее, чтобы помочь большему количеству разработчиков, которые хотят быстро начать работу с Java.
------------- Далее идет текст ----------------
В предыдущих трех статьях мы закончили рассказывать о том, как быстро начать разработку фронтенда для Android, iOS и Web, эта статья — последняя — бэкенд на Java. Серверная часть Java имеет очень большую экосистему, и она также включает в себя множество сложных вопросов, таких как распределенные транзакции, распределенные запросы, микросервисы, высокий уровень параллелизма, устойчивость к сбоям, контейнеризация и т. д. Используемые технологические стеки и фреймворки еще более сложны. Однако мы пока только для быстрого старта, мы будем получать только самые необходимые знания, которые могут нам помочь в развитии реальных проектов. Затем основные знания, которые нам нужно усвоить, в основном включаютJava,Servlet,JDBC,MySQL,Redis,Spring,MyBatisЖдать. Основы Java говорятНачало работы с Android-разработкойЭто уже было сказано ранее, поэтому я не буду повторяться здесь.
Инструменты разработки
Давайте сначала поговорим об инструментах разработки бэкенда Java, я рекомендую использоватьIntelliJ IDEA, который признан лучшим инструментом разработки Java. Разработчики Android, знакомые с Android Studio, должны быть знакомы с ним. Можно сказать, что его мощные функции и функции полностью злоупотребляют.EclipseиMyEclipse, особенно моя любимая функция интеллектуальных подсказок кода. IDEA определенно значительно повысит эффективность разработки после знакомства с ней.В настоящее время разработчики нашей компании полностью обратились к IDEA. Здесь я всем рекомендую набор очень подробных руководств на китайскую тематику.Это руководство с открытым исходным кодом находится на github и часто обновляется.Следующий адрес:
- IntelliJ-IDEA-Tutorial:GitHub.com/GiantGirl/int E…
Если английский лучше, рекомендуется прочитать официальный справочный документ напрямую:
- Официальная справочная документация:woohoo.jet brains.com/help/idea/no…
Servlet
Сервлет является базовой технологией Java Web, хотя теперь из-заSpringFramework, нам больше не нужно писать сервлет напрямую, но в качестве базовой технологии нам все еще нужно понять его принцип, чтобы мы могли лучше понять структуру Spring поверх него.
ServletНа самом деле этоServer Applet—— Серверный апплет, то есть небольшая программа, работающая на сервере, также является веб-компонентом, основанным на технологии Java. Написание сервлета — это на самом деле написание класса Java в соответствии со спецификацией сервлета. Просто этот Java-класс не может работать независимо, у него нет основной функции, его нужно развернуть наКонтейнер сервлетов, контейнер создает и вызывает методы сервлета. Контейнер сервлетов, также известный каквеб-контейнер, в настоящее время в основномTomcatиJetty, оба имеют свои преимущества и недостатки, Jetty больше подходит для нужд распределенной среды общедоступного облака, тогда как Tomcat больше подходит для среды корпоративного уровня. Большую часть времени мы все еще находимся на стадии разработки приложений корпоративного уровня, поэтому Tomcat по-прежнему является первым выбором.
В настоящее время спецификация сервлетов эволюционировала до версии 4.0, по сравнению с предыдущей версией в первую очередь добавляется поддержкаHTTP/2служба поддержки. Кроме того, по сравнению с предыдущей версией 2.5, самое главное, что версия 3.0 добавилаWebSocketподдержка, сервлеты до версии 3.0 поддерживают толькоHTTPпросить. Итак, для текущего сервлета, какие точки знаний необходимо изучить? На этот раз я сначала перечислю основные точки знаний, а затем порекомендую некоторые соответствующие учебные ресурсы.
- Конфигурация среды:включаютсреда разработкииСреда развертывания, чтобы ознакомиться с конструкцией этих двух сред, среда разработки — это в основном конфигурация установки JDK и IDEA, а среда развертывания — это веб-контейнер.Tomcatконфигурация установки. Кроме того, Java Web обычно используетсяMavenКак инструмент сборки, также поймите использование Maven. Хотя Gradle более продвинут, чем Maven, большинство проектов по-прежнему используют Maven в бэкенде Java.
- жизненный цикл: чтобы понять жизненный цикл сервлета и понять, как контейнер сервлета управляет экземплярами сервлета.
- API: быть знакомым с общим API сервлета, в основном включая интерфейс сервлета, ServletConfig, ServletContext, RequestDispatcher, ServletRequest, ServletResponse, HttpServlet, HttpServletRequest, HttpServletResponse, особенно последние два класса.HttpServletRequest,HttpServletResponseОно должно быть очень знакомым, что часто используется в реальных разработках.
- фильтр: Фильтры сервлетов могут перехватывать запросы и ответы и выполнять некоторую обработку. Он в основном используется для аутентификации пользовательских запросов, записи журналов, фильтрации или замены данных, декодирования или расшифровки данных и т. д. Несколько фильтров могут образовывать цепочку фильтров.
- слушатель: прослушиватель сервлетов в основном используется для мониторинга событий жизненного цикла объектов ServletContext, HttpSession и ServletRequest, а также событий изменения атрибутов этих объектов.
- WebSocket: Следует отметить, что некоторые реализации наследования WebSocketServlet в Интернете уже объявлены устаревшими (истекшими).Согласно Java WebSocket, выпущенному OracleСпецификация JSR356Показаны две реализации, одна из которых предназначена для использования@ServerEndpointАннотация, другой - наследованиеjavax.websocket.EndpointКлассы, аннотации рекомендуются. Введение в разработку WebSocket см. в этой статье:Начало работы с Java WebSocket Разработка WebSocket
Что касается поддержки HTTP/2, то в настоящее время она не получила широкого распространения, и соответствующей информации также очень мало, о ней вы сможете узнать подробнее позже.
Далее я рекомендую некоторые учебные ресурсы. Первая книга от Head First — «Head First Servlets & JSP», она всегда проста для понимания и очень подходит для начала работы. Однако среди них главы 7/8/9 про JSP можно пропустить, все-таки JSP устарел. Глава 14, часть о шаблонах, очень достойна прочтения. Следует сказать, что ее должен прочитать каждый. Когда вы понимаете, о чем в ней говорится, можно спроектировать лучшую систему.
Кроме того, моя вводная книга по сервлетам ** "Углубленное объяснение сервлета/JSP - веб-разработка на основе Tomcat"Это также хорошая вводная книга, но она слишком старая и перестала печататься, поэтому ее невозможно купить на Amazon, Jingdong, Dangdang и т. д. В Интернете можно найти только электронную версию. Относительно новая книга под названием"Servlet, JSP and Spring MVC Study Guide"**, опубликовано в конце 2016 года, но я его не читал, поэтому не знаю как.
У новичка есть набор кратких руководств, которые на самом деле представляют собой набор руководств по английскому языку, переведенных из-за границы. Вот адрес:
Что касается видеоресурсов, я нашел специальное видео о возможностях Servlet 3.0 и поделился им с вами:
- Ссылка на сетевой диск Baidu:pan.baidu.com/s/1qYn2ws0Пароль: p85n
JDBC
JDBC= Java DataBase Connectivity, представляющий собой набор стандартных API-интерфейсов Java для доступа к базам данных. Вызывая этот API, вы можете подключаться к базе данных, выполнять операторы SQL и обрабатывать данные в базе данных. Однако JDBC API — это всего лишь набор стандартных интерфейсов, а реальное соединение с базой данных — это драйвер JDBC.Разные базы данных используют разные драйверы JDBC.
Как и в случае с Servlet, из-за более удобной структуры мы не используем API JDBC напрямую для программирования баз данных. но,HibernateиMyBatisНижним уровнем фреймворка является JDBC, поэтому нам все равно нужно понимать основные принципы JDBC, чтобы быстрее начать работу с такими фреймворками, как MyBatis. К счастью, в этой части очень мало контента, поэтому нам нужно потратить немного времени, чтобы его освоить. Я также нашел онлайн-руководство по JDBC, которым могу поделиться с вами.
- Учебное пособие по JDBC:www.yiibai.com/jdbc/
Есть только несколько основных интерфейсов и классов JDBC:Driver,DriverManager,Connection,Statement,ResultSet,SQLException. Чтобы понять, как использовать эти интерфейсы и классы, а также понять процесс использования JDBC, нужно выполнить всего пять шагов:
- Зарегистрируйте драйвер JDBC;
- установить соединение с базой данных;
- выполнять операторы SQL;
- получить данные результата;
- Очистите ресурсы.
Кроме того, также необходимо понимать обработку транзакций, включая фиксацию и откат транзакций. И научитесь пакетному SQL. Все это описано в руководстве по JDBC выше, поэтому я не буду вдаваться в подробности. Кроме того, в книге «Углубленное объяснение сервлета/JSP — веб-разработка на основе Tomcat», которую я представил выше, есть глава, посвященная JDBC, вы также можете взглянуть на нее.
база данных
Мы знаем, что база данных разделена наРеляционная база данныхинереляционная база данныхДве категории. Реляционные базы данных в основномMySQL,Oracle,DB2,PostgreSQLи т. д., стандартный язык запросов данныхSQLЭто язык, основанный на реляционной базе данных. нереляционная база данныхNoSQL(не только SQL), в основном в том числеRedis,MongoDB,HBaseЖдать. Сегодня во многих проектах используется более одного типа базы данных, из которыхRedisМожно сказать, что это обязательно. Кроме того,MySQLКак самая популярная реляционная база данных, она имеет открытый исходный код и проста в использовании, поэтому сначала мы познакомимся с этими двумя базами данных.
Давайте сначала познакомимся с инструментами проектирования реляционных баз данных.Похоже, что для нереляционных баз данных нет специальных инструментов проектирования. Во-первых, несомненно, что под WindowsPowerDesignerявляется самым мощным и самым популярным, к сожалению, у него нет версии для Mac. Я рекомендую использовать MacNavicat, который является не только простым в использовании клиентом реляционной базы данных, но и хорошим инструментом моделирования базы данных.После моделирования его можно экспортировать в виде файла SQL, что очень удобно.
заMySQL, в настоящее время нам не нужно изучать более глубокие вещи, такие как механизмы хранения, хранимые процедуры, триггеры, уровни изоляции транзакций, распределенные транзакции, механизмы блокировки и т.д., самое базовое понимание следующего:
- Конфигурация установки: Излишне говорить, что самое основное
- SQL: вы должны быть хорошо знакомы с SQL, который также является самым базовым
- тип данных: Чтобы понять, какие типы данных есть в MySQL и в чем разница между разными типами данных.
- ограничение: Понимать и быть знакомым с использованием различных ограничений, включая ограничения первичного ключа, ненулевые ограничения, уникальные ограничения, ограничения автоинкремента, ограничения значений по умолчанию и т. д.
- показатель: Индекс очень важен и должен быть понят.Конечно, как правильно использовать индекс - это тоже знание
- функция: узнайте о некоторых часто используемых функциях, таких как количество, сумма, среднее, максимальное, минимальное, сейчас и т. д.
Нет необходимости рекомендовать какие-либо учебные ресурсы для получения этих базовых знаний, просто найдите их в Интернете. Однако для дальнейшего изучения после освоения этих основ я рекомендую две книги:«Высокопроизводительный MySQL»и«Инсайдер технологии MySQL: механизм хранения InnoDB». Кроме того,официальная документацияЭто тоже важно, но контента больше.
заRedis, потому что он основан на памяти, производительность очень высока, и многие проекты используют его как кеш. Хотяkey - valueбаза данных, но значение может бытьString (строка), Hash (карта), List (список), Collection (наборы), Sorted Sets (сортированные наборы)и другие типы. Порекомендуйте краткий учебник для новичков, вы можете легко начать работу:
- Учебник по Redis:уууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууу.com/Redis/Redis…
Что касается книг, рекомендуется прочитать «Redis Combat», которая является очень хорошей и хорошо принятой вводной книгой.
Кроме того, библиотека Java для Redis называетсяJedis, но и простое понимание его использования.
Spring
Весна сложилась и по сей день и превратилась в огромную экосистему.Что мы знаемSpring FrameworkЭто просто основной проект всей экосистемы Spring, в дополнение ко многим другим проектам, в том числеSpring Boot,Spring Cloud,Spring Data,Spring For Androidи т.д. Более 20 предметов, которые вы можете найти вофициальный сайт весныПосмотреть все элементы. Однако давайте начнем только с двух пунктов:Spring BootиSpring Framework. Среди них Spring Framework является основным фреймворком, который мы хотим изучить, но нет необходимости понимать все содержание этого проекта — достаточно сначала понять некоторые базовые вещи, которые могут поддержать нашу разработку начального уровня.
Итак, давайте сначала поговоримSpring Framework, последней версией является Spring Framework 5.0. Spring Framework включает более 20 модулей, в том числеspring-core,spring-aop,spring-beans,spring-context,spring-jdbc,spring-web,spring-webmvc,spring-websocketПодождите, конкретный список можно просмотретьПроект Github для Spring Framework. Однако, как правило, нам не нужно импортировать все модули в проект, просто импортируйте их по мере необходимости.
Изучая Spring Framework, нужно освоить две основные идеи дизайна, а именно:Инверсия управления (IoC)иАспектно-ориентированное программирование (АОП). Когда дело доходит до инверсии управления, нужно понимать еще одну концепцию, называемуюВнедрение зависимостей (DI), разница в том, что инверсия управления — это дизайнерская идея, а внедрение зависимостей — это один из способов реализации, и есть еще один способ реализации, который называетсяПоиск зависимостей. Однако большинство из них используют внедрение зависимостей, и Spring также использует внедрение зависимостей. Кроме того, ядро Spring имеетИнверсия контейнера управления (контейнер IoC), в основном с помощью файла конфигурации и использования отражения для создания необходимых классов реализации во время выполнения. Чтобы понять эти понятия, рекомендуется прочитать ответ на Zhihu, который очень легко понять:
АОП также является дизайнерской идеей, в основном для отделения некоторого кода, не связанного с бизнес-логикой, такого как ведение журнала, статистика производительности, контроль безопасности, обработка транзакций, обработка исключений и т. д. В нижнем слое Spring реализован внутренний механизм АОП через динамический прокси, кроме того, верхний слой также поддерживает метод аннотации AspectJ. В АОП есть несколько связанных концепций, которые необходимо понимать:Aspect,Joint point,Pointcut,Advice,Weave,Introduction,Target Object,AOP Proxy. Итак, чтобы помочь вам понять концепции и принципы АОП, а также то, как использовать АОП в Spring, я нашел две статьи, которыми хочу поделиться с вами:
Далее узнайте большеSpring Boot, Spring Boot может упростить создание и разработку приложений на основе Spring, а Spring Cloud основан на Spring Boot. Spring Boot — это, по сути, набор библиотек, чьиartifactIdобычно сspring-boot-starter-как префикс. Собрать проект с помощью Spring Boot тоже очень просто.Поделюсь двумя статьями из блога Чжай Юнчао, автора книги «Микросервисы Spring Cloud на практике»:
- Начало работы с Spring Boot
- Используйте Spring Initializr в Intellij для быстрой сборки проектов Spring Boot/Cloud.
Для относительно систематического введения в Spring я рекомендую две книги с самым высоким рейтингом:«Весна в действии (4-е издание)»и«Освоение Spring 4.x: разработка корпоративных приложений на практике». Обе книги основаны на Spring 4, книг на основе Spring 5 пока нет, но это не имеет большого значения для начала работы. Кроме того, в книгу «Освоение Spring 4.x: разработка корпоративных приложений на практике» также добавлены главы по Spring Boot.Официальная документация Spring FrameworkМожно и почитать.В конце концов, содержание самое свежее и подробное, но содержания слишком много.Говорят, что страниц больше 600, так что не скоро закончат. не рекомендуется новичкам напрямую читать официальные документы.Если вы не понимаете некоторые моменты глубоко, вы можете пойти и посмотреть на них, чтобы углубить свое понимание.Официальная документация Spring Bootто же.
MyBatis
Как мы знаем ранее, стандартным API для Java для доступа к базе данных является JDBC.Однако, если вы напрямую используете JDBC API для кодирования и работы с базой данных, код будет очень громоздким, а масштабируемость очень низкой.Поэтому будет полученный.Hibernate,MyBatis,SpringJDBCи другие платформы ORM, инкапсулирующие JDBC для упрощения разработки. Так почему же стоит выбрать MyBatis, а не Hibernate или SpringJDBC? Главным образом потому, что MyBatis в настоящее время является самым популярным, и MyBatis также прост в использовании.
Давайте сначала разберемся с концепцией ORM,ORM = Object Relational Mapping, называетсяРеляционное сопоставление объектов, то есть между объектом бизнес-сущности и реляционной базой данных устанавливается отношение отображения.Простейшее отношение отображения: класс соответствует таблице данных, каждый экземпляр класса соответствует записи в таблице, а каждый атрибут класс соответствует каждому полю таблицы. Hibernate — это стандартная структура ORM, которая устанавливает полное сопоставление между классами сущностей и базами данных. По сути, она не требует, чтобы разработчики сами писали SQL, а операторы SQL автоматически генерируются внутри. Поэтому для приложений с очень большим объемом данных если вы хотите оптимизировать операторы SQL, это сложнее. MyBatis — это полуавтоматическая структура ORM.В отличие от Hibernate, который предоставляет полный набор механизмов сопоставления классов сущностей с таблицами базы данных, SQL генерируется автоматически, в то время как MyBatis только устанавливает отношение сопоставления между классами сущностей и SQL и не генерирует автоматически. Операторы SQL, поэтому разработчикам необходимо написать свой собственный SQL. Таким образом удобнее оптимизировать SQL.
Чтобы понять, как использовать MyBatis, просто посмотрите официальную документацию. Там не так много контента, а также есть китайская версия. Ниже приведен адрес ссылки:
- Официальная документация MyBatis:woohoo. не добавил elevate.org/ не добавил elevate-3/ в…
Начиная
Впереди много контента.Очень сложно протянуть все точки знаний через реальные проекты.Основная причина в том, что нет проекта для непосредственного написания Servlet и JDBC, а эти две технологии лежат в основе Java Web. , Должен быть полностью понят. Затем мы можем только разобрать его и изучить.Для нативной части Servlet и JDBC рекомендуется практиковаться в соответствии с демонстрацией в книге.Основная цель - сформировать глубокое понимание этих основных точек знаний посредством кодирования. Spring, MyBatis и базы данных можно изучить с помощью некоторых проектов с открытым исходным кодом.Я нашел хороший учебный проект, основанный на Spring Boot, и рекомендую его всем:
Каждый маленький пункт в нем очень прост, рекомендуется акцентировать внимание именно на нем.springboot-mybatis-redisЭтот небольшой проект является наиболее подходящим для того, что нам нужно изучить. Поскольку проект слишком простой, рекомендуется его расширить, например, добавить еще одну таблицу самостоятельно, а также добавить, удалить, изменить и проверить ее, добавив новый интерфейс REST; или добавить функцию регистрации и входа пользователя и использовать фильтры для единообразной аутентификации пользователей или добавление поддержки WebSocket. Лучше всего расширить его до относительно полного веб-проекта Java, такого как упрощенный проект электронной коммерции, который не требует интерфейса, а должен только предоставить интерфейс. Когда вы сможете завершить этот полноценный веб-проект Java, это будет действительно началом.
Думай и практикуй
Как настроить, если вы используете Gradle в качестве инструмента сборки? Чем он отличается от конфигурации Android? Как использовать SpringJDBC? Как это по сравнению с MyBatis? Давайте почувствуем разницу этих точек знаний через реальный проект.
Отсканируйте QR-код ниже, чтобы перейти к номеру подписки.