Если у вас есть концепция полета в небе, у вас должна быть реализация приземления.
Концепция + реализация кода является особенностью этой статьи, учебник будет охватывать полные графические руководства, примеры кода.
Каждая точка знаний сопоставляется с вопросами интервью для самопроверки, и техническая самопроверка завершается.
Эта статья для начинающих, поэтому я надеюсь, что все кодовые случаи в статье можно будет набрать еще раз.
С Новым годом, старший брат и старшая сестра, не пропустите
**Текст включен в репозиторий с открытым исходным кодом GitHub.Lu_JavaNodesАдрес облачного хранилища кодаLu_JavaNodes, ** содержит все ментальные карты, коды случаев и видео с последующими пояснениями в руководстве. Добро пожаловать в Star, чтобы внести свой вклад.
предисловие
Гэнцзы Год Крысы, Фэнкун Эр, после попытки заснуть, поиграть в маджонг, сделать холодную кожу и приготовить пирожные,Я не мог не впасть в большие размышления о жизни и обществе
Два года опыта разработки и три года опыта лектора по большим данным говорят мне, пора что-то написать, а я давно чувствовал потребность что-то написать. Я никогда не боялся рассуждать об этом празднике с самым скучным видом, но я не ожидал...
Поэтому я решил организовать свои жизненные навыки в книгу,Напишите серию "Graphic and Text Tutorial" обучающих читов по технологии Java., Это упражнение стремится быть «иллюстрированным» и «легким для понимания», сочетая концепции и практику работы с кодом, каждый пункт знаний дополняется вопросами интервью для самопроверки, я надеюсь, что каждый сможет с удовольствием изучить Java с помощью этой серии руководств, от практики Qi к взлету.
В этом выпуске выбрана технология SpringBoot., SpringBoot теперь является обязательным методом практики для программистов Java.С навыками разработки SpringBoot вы можете ходить по рекам и озерам, и вы не будете бояться спроса.
Прежде чем официально приступить к обучению, сначала используйте интеллект-карту, чтобы понять схему упражнений в этом руководстве.
Краткое описание, туториал разделен на базовый, продвинутый и продвинутый
Основная глава, эта глава направлена на то, чтобы легко и быстро освоить базовое использование SpringBoot и применить его к проекту.
Расширенные статьи, узнайте больше о распространенном использовании и основных принципах SpringBoot
Расширенные статьи, посвященные интеграции и использованию SpringBoot с основными сценариями.
Требования к окружающей среде
Средства разработки Версия IDEA не ограничена
maven3.x
jdk1.8
В этом руководстве используется SpringBoot 2.0.3.RELEASE.
Цели обучения этой статьи
Знакомство со SpringBoot
Мастер создания веб-среды через SpringBoot
Овладейте способностью SpringBoot + Mybatis + Mysql реализовывать добавление, удаление и модификацию.
Освойте использование тестов SpringBoot
Что такое SpringBoot
зачем использовать это
SpringBoot имеет много преимуществ и очень помогает повысить скорость разработки.конфигурационный файлОбъясните превосходство SpringBoot.
Оглядываясь назад на прошлое, когда я только что закончил учебу, я разработал систему управления в трансграничной компании электронной коммерции.Этот проект принял самую традиционную архитектуру SSM.Этот проект полон большого количества файлов конфигурации.Что такое большое количество? Возьмите каштан, как показано ниже.
**Что изображено на картинке выше? **Написать минимальную конфигурацию с добавлениями, удалениями и исправлениями в SSM.
Друг мой милый, подумай, если ты еще не начал писать код функции, то надо сначала написать такую кучу конфигураций, и ты не знаешь, написал ли ты ее сразу после окончания. это, если вы хотите сделать управление разрешениями, Redis, очередь сообщений, сколько конфигурации вам нужно написать? ? ? Такая эффективность разработки хотела бы умереть
Но не паникуйте, пока вы изучаете SpringBoot, через конфигурационный файл выше технологии SpringBoot.не пиши, не пиши, не пиши.
о боже, такая хорошая техника, если ты ее не изучишь, ты потеряешь деньги! Нечего сказать, давайте учиться этому вместе, учиться, учиться.
Введение в Spring Boot
Советы: Этот раздел представляет собой введение и особенности SpringBoot.Если вы хотите почувствовать прелесть SpringBoot,Вы можете пропустить и прочитать вторую главу и использовать SpringBoot за 10 минут.
Spring Boot — это новая платформа, предоставленная командой Pivotal, которая предназначена для упрощения первоначального процесса создания и разработки приложений Spring.
Можно подумать: springboot (микрофреймворк) = springmvc (контроллер) + spring (управление проектами)
Особенности следующие
- Создайте отдельное приложение Spring
- Используя встроенный Tomcat, приложение не нужно упаковывать как военный
- Упрощенная конфигурация Maven, начальная автоматическая настройка и контроль версий
- Множество автоматических настроек для упрощения разработки
- Не требуется конфигурация xml, работает из коробки
Нет необходимости уделять особое внимание введению и характеристикам, и они будут подробно объяснены в учебнике.
Используйте SpringBoot за 10 минут (первое демо)
10 минут на использование кода SpringBoot
В этом разделе начинается написание первого демо, подготовьте свою ИДЕЮ, идет SpringBoot.
демонстрационные требования
-
Используйте SpringBoot для создания веб-среды
-
Создайте класс UserController и определите в классе метод getUser().Этот метод вернет предложение в методе Json: SpringBoot действительно благоухает.
-
Запуск проекта может запросить этот метод и получить данные ответа
Советы: см. код случая на GitHub и Code Cloud Warehouse.
1. Создайте пустой проект maven с помощью IDEA, чтобы улучшить структуру проекта.
2. Запишите зависимости SpringBoot в pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.lu</groupId> <artifactId>boot-hello</artifactId> <version>1.0-SNAPSHOT</version> <!--继承springboot的父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> </parent> <dependencies> <!--引入springboot的web支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
</project>
скопировать код
3. Напишите класс запуска Spring Boot [Особенности проекта Spring Boot] Вы можете запустить проект Spring Boot
Расположение стартового класса
Код класса запуска выглядит следующим образом
/**
* 启动类规则
* 1.启动类位置:主包下面和子包同级
* 2.需要一个@SpringBootApplication
*/
@SpringBootApplication
public class AppRun {
public static void main(String[] args) {
// 参数:启动类类对象 主函数形参名
SpringApplication.run(AppRun.class,args);
}
}
4. Напишите файл конфигурации приложения
Советы: Через файл конфигурации вы можете указать номер порта, имя проекта и т. д.
Правила профиля
-
Имя файла конфигурации должно быть приложением.
-
Существует три формата файлов конфигурации
-
properties
-
yml
-
yaml
-
Расположение файла конфигурации
Содержимое файла конфигурации
5. Напишите пользовательский контроллер
6. Начните проект, запустив класс
Проект запускается правильно, и журнал выглядит следующим образом
Через лог можно узнать, что проект запущен на порту 8802, а имя проекта (контекстный путь) пустое
7. Откройте браузер и перейдите по адресу:http://localhost:8802/getUser
Детализированный код первой демоверсии
Поздравляю, я знаю, что вы должны были завершить эффект первой демонстрации, но предполагается, что вы будете немного сбиты с толку, почему вы начали работать? Почему бесполезный Tomcat? Что настроено в файле pom? Что такое стартовый класс написан?
Друзья, не паникуйте, мистер Лу объяснит вам по порядку.
Особенности SpringBoot
Почему тебе не нужен Томкэт? Это одно из преимуществ SpringBoot, вы можете вспомнить характеристики SpringBoot в разделе введения. Если не помнишь, не ройся, это еще раз написала заботливая учительница Лу
Создайте отдельное приложение Spring
Используя встроенный Tomcat, приложение не нужно упаковывать как военный
Упрощенная конфигурация Maven, начальная автоматическая настройка и контроль версий
Множество автоматических настроек для упрощения разработки
Не требуется конфигурация xml, работает из коробки
Причина, по которой вам не нужно устанавливать Tomcat отдельно, заключается в том, чтоSpringBoot использует встроенный Tomcat, поэтому проект SpringBoot можно запускать напрямую.
Подробное объяснение конфигурации зависимостей файла pom
Упрощенная конфигурация Maven, начальная автоматическая настройка и контроль версий
Без использования SpringBoot для построения веб-среды нужно импортировать как минимум семь-восемь зависимостей, но если я правильно помню, в разработке демо используется только одна зависимость, что не так уж и мало, почему?
Давайте сначала объясним первую родительскую конфигурацию, написанную pomродительский проект
<!--继承springboot的父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
Этот элемент конфигурации является объявлением,Версия приложения, используемого для управления SpringBoot..
Что ты имеешь в виду?
Друзья, оглядываясь назад, что такое импортированные зависимости?
<!--web相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web — это вторая зависимость, которую мы импортировали.За исключением того, что имя немного длинное, самое особенное в том, что не написан номер версии, но это не влияет на загрузку зависимостей, потому что spring-boot- starter-web использует родительский номер версии проекта 2.0.3.RELEAS.
Это роль родительского проекта, в дальнейшем при импорте зависимостей не нужно писать номер версии по умолчанию.
Номер версии не пишется, но **Почему достаточно одной зависимости? ** Из-за лаунчера
Что такое стартер, посмотрите на длинное название spring-boot-starter-web, первые три слова нужно обратить внимание на это названиеspring-boot-starterЛюбые зависимости, начинающиеся с этих трех букв, называются стартовыми.
Spring Boot извлекает все функциональные сценарии и превращает их в стартеры (стартеры) один за другим.Все зависимости этих сценариев, связанных со стартером, нужно только импортировать в проект. Средство запуска для импорта того, какую сцену вы хотите использовать.
Возьмите каштан:spring-boot-starter-webСтартер веб-сцены SpringBoot записывает все зависимости, которые можно использовать для разработки веб-проектов, в этот стартер, так что у стартера импорта есть все зависимости, необходимые для разработки веб-проектов.
В общем, то же самое:
- Используя Redis, будетspring-boot-starter-redisпусковая установка
- Использование ES приведет к вызовуspring-boot-starter-data-mongodbпусковая установка
- больше сотни
Объяснение начального класса
/** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication public class AppRun {
скопировать кодpublic static void main(String[] args) { // Spring应用启动起来 SpringApplication.run(HelloWorldMainApplication.class,args); }
}
Если наш проект — ракета, основная функция этого класса — кнопка запуска ракеты, и запуск метода main запустит проект.
Советы: Принцип реализации класса запуска и более подробное использование файла конфигурации подробно объясняются в расширенной главе.
SpringBoot + Mybatis + тест для добавления, удаления, модификации и проверки
Затем демо продолжает записывать для интеграции Mybatis
Готов к работе
подготовка библиотечного стола
Создать таблицу в базе данных mysql в соответствии с sql
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0;
-- Table structure for t_user
DROP TABLE IF EXISTS
t_user
; CREATE TABLEt_user
(id
int(11) NOT NULL AUTO_INCREMENT,username
varchar(255) DEFAULT NULL,password
varchar(255) DEFAULT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- Records of t_user
BEGIN; INSERT INTO
скопировать кодt_user
VALUES (1, 'zhangsan', '123456'); INSERT INTOt_user
VALUES (2, 'lisi', '123456'); COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
Подготовка класса сущности
Напишите класс сущности в пакете com.lu.entity проекта boot-hello.
public class User { private Integer id; private String username; private String password;
скопировать код//get set 方法省略....
}
Создайте каталог картографов в ресурсах (поместите файлы картографов)
Интеграция Mybatis
1. Импорт зависимостей
<!-- SpringBoot 集成 Mybatis的 启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
Примечание. Поскольку Springboot интегрирует стартер mybatis, по умолчанию он будет полагаться на mybatis, поэтому нет необходимости вводить версию mybati отдельно, иначе будут конфликты.
2. Настройте файл конфигурации приложения
Необходимо написать две конфигурации
- Параметры, связанные с базой данных
- Конфигурация адреса файла сопоставления Mybatis
#数据源配置 #指定驱动 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #指定url spring.datasource.url=jdbc:mysql://localhost:3306/boot #指定用户名 spring.datasource.username=root #指定密码 spring.datasource.password=123456 #指定连接池类型 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#Mybatis的配置 配置mapper文件的地址 mybatis.mapper-locations=classpath:mappers/*Mapper.xml
Объясните конфигурацию mapper-locations, как показано на рисунке.
3. Добавьте аннотацию интерфейса scan dao в класс запуска.
4. Разработать интерфейс DAO и Mapper
public interface UserDao {
List<User> findAll();
}
содержимое файла сопоставления
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lu.dao.UserDao">
<select id="findAll" resultType="com.lu.entity.User">
select * from t_user
</select>
</mapper>
Теперь, когда код написан, как программист с хорошими привычками я долженПротестируйте метод запроса в интерфейсе daoМожно ли его использовать нормально, но, похоже, нужно запустить проект и вызвать его в контроллере, чтобы протестировать.
нет нет нет На самом деле, нет, SpringBoot может очень, очень, очень удобно интегрировать модульное тестирование Далее мы будем использовать SpringBoot Test для тестирования нашего метода запроса.
5. Представьте тестовые зависимости SpringBoot
<!-- 测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
6. Напишите тестовые классы
расположение тестового класса
тестовый контент
/** * @SpringBootTest(classes = {AppRun.class}) 参数为启动类的类对象 */ @RunWith(SpringRunner.class) @SpringBootTest(classes = {AppRun.class}) public class TestUserDao { @Autowired private UserDao userDao;
скопировать код/** * 测试查询方法 */ @Test public void test1(){ List<User> all = userDao.findAll();
// 打印查询结果 for (User user : all) { System.out.println(user); } } }
Запуск тестового класса приводит к следующему
Краткое изложение основ
Поздравляем с завершением этой главы и поздравляем с освоением возможностей добавления, удаления и изменения с помощью SpringBoot+Mybatis. Аплодисменты вам!
Давайте еще раз рассмотрим цели обучения в этой статье.
- Знакомство со SpringBoot
- Мастер создания веб-среды через SpringBoot
- Овладейте способностью SpringBoot + Mybatis + Mysql реализовывать добавление, удаление и модификацию.
- Освойте использование тестов SpringBoot
Чтобы узнать больше об использовании SpringBoot, продолжайте обращать внимание на эту серию руководств.
Ниже я подготовил несколько вопросов для самопроверки интервью и проектных кейсов для моего друга Мэн, Надеюсь, вы сможете стать раскаленным железом и закрепить свои знания.
Вопросы для интервью по самооценке (ответы см. в следующем выпуске)
-
Что такое Spring Boot?
-
Зачем использовать Spring Boot?
-
Нужен ли Spring Boot автономный контейнер для запуска?
-
Как вы понимаете Starters в Spring Boot?
-
Как проект SpringBoot интегрирует Mybatis?
Небольшой кейс проекта внедрения самотестирования (ответ см. в следующем выпуске)
Совет: в моем плане он будет обновлен после обновления серии графических руководств по SpringBoot.Графическое руководство по фактической разработке системы фонового управления электронной коммерции SpringBoot
Библиотечные таблицы всех небольших случаев проекта взяты из этого проекта Благодаря тщательному дизайну и взаимосвязи, благодаря предвосхищению небольших случаев, последующая деятельность может быть напрямую совместима с Учебным пособием по практическому развитию микросервисов.
библиотечный стол
Следующая таблица представляет собой инструкцию по созданию таблицы таблицы категорий продуктов.
CREATE TABLE `tb_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目id',
`name` varchar(20) NOT NULL COMMENT '类目名称',
`parent_id` bigint(20) NOT NULL COMMENT '父类目id,顶级类目填0',
`is_parent` tinyint(1) NOT NULL COMMENT '是否为父节点,0为否,1为是',
`sort` int(4) NOT NULL COMMENT '排序指数,越小越靠前',
PRIMARY KEY (`id`),
KEY `key_parent_id` (`parent_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1424 DEFAULT CHARSET=utf8 COMMENT='商品类目表,类目和商品(spu)是一对多关系,类目与品牌是多对多关系';
Поскольку классификация продуктов будет иметь иерархическую взаимосвязь, здесь мы добавилиparent_id
поле для самоассоциации с другими категориями в этой таблице.
В тестовые данные добавлено слишком много содержимого sql. При необходимости посетите облачное хранилище кода или получите его через WX.
нужно
Реализуйте следующие методы интерфейса службы.
public interface CategoryService {
//根据父节点查询下一级商品类目数据
List<Category> queryListByParent(Long pid);
}
Просить внимания, просить лайки, просить переадресацию
У меня есть два года опыта разработки и три года преподавания больших данных Java, и я помог более чем 2000 студентам успешно найти работу и сменить работу.
Добро пожаловать в мою официальную учетную запись: Java Notes г-на Лу, которая будет обновлять графические руководства по технологии Java и видеоуроки, опыт изучения Java, опыт интервью по Java и опыт практической разработки Java в долгосрочной перспективе.