栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 2.X 基础教程:快速入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 2.X 基础教程:快速入门

 个人主页: Java程序鱼

 如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和订阅专栏

 微信号:hzy1014211086,如果你正在学习Spring Boot,可以加入我们的Spring技术交流群,共同成长


序号内容链接地址
1面试题专栏https://blog.csdn.net/qq_35620342/category_11278274.html
2Redis专栏https://blog.csdn.net/qq_35620342/category_11257165.html
3SpringBoot2.X基础教程:快速入门https://blog.csdn.net/qq_35620342/article/details/120432103
4SpringBoot2.X基础教程:配置文件详解待分享
5SpringBoot2.X基础教程:SpringBoot整合Thymeleaf待分享
6SpringBoot2.X基础教程:SpringBoot整合Ehcache待分享
7SpringBoot2.X基础教程:SpringBoot整合JdbcTemplate待分享
8SpringBoot2.X基础教程:SpringBoot整合JdbcTemplate 多数据源待分享
9SpringBoot2.X基础教程:SpringBoot整合MyBatis待分享
10SpringBoot2.X基础教程:SpringBoot整合MyBatis 多数据源待分享
11SpringBoot2.X基础教程:SpringBoot整合Spring Data JPA待分享
12SpringBoot2.X基础教程:SpringBoot整合Spring Data JPA 多数据源待分享
13SpringBoot2.X基础教程:数据源详解待分享
14SpringBoot2.X基础教程:事务管理待分享
15SpringBoot2.X基础教程:SpringBoot整合Swagger2待分享
16SpringBoot2.X基础教程:SpringBoot整合Redis待分享
17SpringBoot2.X基础教程:SpringBoot整合MongoDB待分享
18SpringBoot2.X基础教程:SpringBoot整合RabbitMQ待分享
19SpringBoot2.X基础教程:SpringBoot整合Spring Security待分享
20SpringBoot2.X基础教程:使用@Async实现异步任务待分享
21SpringBoot2.X基础教程:使用Docker部署SpringBoot应用待分享

文章目录
  • 一、简介
  • 二、初始化Spring Boot项目
    • 1、使用Spring Initializr 页面创建
    • 2、使用IntelliJ IDEA创建
  • 三、项目结构
  • 四、pom.xml解析
  • 五、编写一个HTTP接口
  • 六、配置端口号
  • 七、应用入口类
  • 八、单元测试
  • 九、源码


一、简介

如果我们需要搭建一个 Spring Web 项目的时候需要怎么做呢?
1)配置 web.xml,加载 Spring 和 Spring mvc
2)配置数据库连接、配置 Spring 事务
3)配置加载配置文件的读取,开启注解
4)配置日志文件

配置完成之后部署 Tomcat 调试

配置非常繁琐,如何解决呢?Spring Boot 让我们的 Spring 应用变的更轻量化。我们不必像以前那样繁琐的构建项目、打包应用、部署到 Tomcat 等应用服务器中来运行我们的业务服务。通过Spring Boot 实现的服务,只需要依靠一个 Java 类,把它打包成 jar,并通过 java -jar 命令就可以运行起来。这一切相较于传统Spring应用来说,已经变得非常的轻便、简单。

Spring Boot 主要有如下优点:

  • 简化 Spring 初始搭建以及开发过程,在短时间内快速构建项目
  • SpringBoot 集成了大量的常用第三方库,例如Redis、Mongodb、JPA等,编码非常简单
  • SpringBoot 提供了丰富的 starter ,集成主流的开源产品,只需要少量配置或零配置即可
  • SpringBoot 内嵌了容器,通过简单命令就可以启动
二、初始化Spring Boot项目

构建一个Sping Boot的Maven项目,强烈推荐Spring Initializr,它从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构。

Spring Initializr 有两种用法:

  • 使用 Spring Initializr (http://start.spring.io)页面创建
  • 使用IntelliJ IDEA创建
1、使用Spring Initializr 页面创建

第一步:进入 http://start.spring.io 页面

本文将实现一个Http接口,所以选择了一个Web组件。

第二步:点击 GENERATE 按钮,下载项目压缩包

第三步:先解压缩,然后导入到工程里去

  • 菜单中选择File –> New –> Project from Existing Sources…
  • 选择解压后的项目文件夹,点击OK
  • 点击 import project from external model 并选择Maven,然后一直Next
2、使用IntelliJ IDEA创建

第一步:菜单中选择File –> New –> Project

第二步:选择Spring Initializr


三、项目结构


如上图所示,Spring Boot 的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

生成的Chapter1Application和Chapter1ApplicationTests类都可以直接运行来启动当前创建的项目,由于目前该项目未配合任何数据访问或Web模块,程序会在加载完Spring之后结束运行。

四、pom.xml解析


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.4
         
    
    com.fish
    chapter1
    0.0.1-SNAPSHOT
    chapter1
    SpringBoot第一章节
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


如上所示,主要有四个部分:

  • 项目元数据:groupId、artifactId、version、name、description等
  • parent:Spring Boot 父级依赖, spring-boot-starter-parent 是一个特殊 Starter,它提供了有用的 Maven 默认配置。此外它还提供了依赖管理功能,您可以忽略这些依赖的版本(version)标签。
  • dependencies:项目具体依赖,这里包含了 spring-boot-starter-web 用于实现HTTP接口, spring-boot-starter-test 用于编写单元测试的依赖包。
  • build:构建配置部分,默认使用了 spring-boot-maven-plugin (Spring Boot Maven插件),配合 spring-boot-starter-parent 就可以把Spring Boot 应用打包成 JAR 来直接运行。
五、编写一个HTTP接口
package com.fish.chapter1.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
  @RequestMapping("/test")
  public String test() {
    return "test";
  }
}

六、配置端口号

application.properties文件加入下面这行配置

server.port=8080
七、应用入口类
package com.fish.chapter1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Chapter1Application {

	public static void main(String[] args) {
		SpringApplication.run(Chapter1Application.class, args);
	}

}

@SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置。后续讲解原理的时候再深入介绍。

启动主程序,然后浏览器地址栏输入:http://localhost:8080/test,可以看到页面返回:test

八、单元测试
package com.fish.chapter1;

import com.fish.chapter1.controller.TestController;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest(classes={Chapter1Application.class})
@WebAppConfiguration
class Chapter1ApplicationTests {

	private MockMvc mvc;

	@BeforeEach
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new TestController()).build();
	}

	@Test
	public void test() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/test").accept(MediaType.APPLICATION_JSON))
			.andExpect(status().isOk())
			.andExpect(content().string(equalTo("test1")));
	}

}

注意引入下面内容,让status、content、equalTo函数可用,否则会报错,提示status()、content()、equalTo()方法不存在。

SpringBoot2.X 默认集成的是 JUnit5,JUnit5 中支持lambda表达式,语法简单且代码不冗余。用法和 JUnit4有些差别,如果不适应的小伙伴,可以切换到JUnit4。


测试通过,如果我们把equalTo改成test1会是怎样?

@Test
public void test() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/test").accept(MediaType.APPLICATION_JSON))
			.andExpect(status().isOk())
			.andExpect(content().string(equalTo("test1")));
}


会报错,预期值test1,实际值test。

单元测试常用注解

  • @BeforeEach:在每个单元测试方法执行前都执行一遍
  • @BeforeAll:在每个单元测试方法执行前执行一遍(只执行一次)
  • @DisplayName(“Demo测试”):用于指定单元测试的名称
  • @Disabled:当前单元测试置为无效,即单元测试时跳过该测试
  • @RepeatedTest(n):重复性测试,即执行n次
  • @ParameterizedTest:参数化测试,
  • @ValueSource(ints = {1, 2, 3}):参数化测试提供数据
九、源码

本文的相关例子可以查看下面仓库中的 chapter1 目录:

Gitee:https://gitee.com/hezhiyuan007/spring-boot-study
Github:https://github.com/java-fish-0907/spring-boot-study

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号