SpringBoot进击 | 一浅出:Spring Boot简单快速上手书

版权声明:本文为博主[魏风物语]原创文章,欢迎转载,转载请注明作者,原文超链接 https://blog.csdn.net/itanping/article/details/82185595

为了后继的 Spring Cloud 学习和进阶,我们需要先行了解 Spring Boot


1.前言

1.1 认识 Spring Boot

Spring Boot 是由Pivotal团队提供的全新框架。她:

  • 从2002年开始,Spring一直在飞速的发展,而Java EE使用Spring却逐渐变得笨重起来,大量的XML文件存在于项目之中,繁琐的配置,整合第三方框架的配置问题,导致了开发和部署效率的降低。
  • Spring Boot是伴随着 Spring 4.0 诞生的,从字面理解,Boot是引导的意思,因此 Spring Boot旨在帮助开发者快速搭建Spring框架。Spring Boot继承了原有Spring框架的优秀基因,使Spring在使用中更加方便快捷。
  • Spring Boot并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置,简化Spring应用搭建和开发。

1.2 了解 Spring Boot

做为一个优秀的轻量级框架,她的特点突出:

  • 轻量快捷:门槛低,易上手,致力于简洁,让开发者写更少的配置,更快的搭建和启动项目
  • 自动化配置:Spring Boot为每一个Starter都提供了自动化的Java配置类,用来替代我们传统Spring应用在XML中繁琐且并不太变化的Bean配置
  • 嵌入式容器:内嵌Tomcat等Web容器
  • 简化依赖管理:对功能性模块进行了划分和封装,使用简单,避免传统Spring应用产生的大量依赖关系而引发的JAR冲突;Java Config的方式,对Spring进行配置,避免了XML配置以及复杂的依赖管理

2.进击

既然Spring Boot 那么好,那我们就马上来一发吧~

2.1 准备工作

我们需要:

  • JDK 1.8或以上
  • Maven 3.0或以上
  • IntelliJ IDEA

2.2 构建工程

打开IDEA,菜单栏 File >> New >> Project >> Spring Initializr >> [Next]
2.2.1 Project SDK:1.8;choose Initializr Service URL:Default >> [Next]
2.2.2 填写Group、Artifact等项目信息 >> [Next]
2.2.3 Dependencies:项目依赖选择,选择Web并钩上; Spring Boot 版本选择,这里我使用的是 2.0.4 >> [Next]
2.2.4 项目名称、路径设置 >> [Finish]
这里写图片描述
如此,一个画风干净的Spring Boot Demo就映入眼帘。

2.3 目录结构

└─wei-springboot
    │  mvnw        // 全名是maven wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本                 
    │  mvnw.cmd    // 当用户执行mvnw clean命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如mvn clean
    │  pom.xml                             // maven 依赖配置文件
    │  wei-springboot.iml                  // idea的配置文件
    │
    ├─.mvn
    │  └─wrapper
    │          maven-wrapper.jar           // 当前使用的maven jar包
    │          maven-wrapper.properties    // 记录你要使用的Maven版本
    │
    └─src                                  // java源代码目录
        ├─main
        │  ├─java
        │  │  └─com
        │  │      └─wei
        │  │              WeiSpringbootApplication.java    // 启动类,程序入口
        │  │
        │  └─resources                          // 资源文件
        │      │  application.properties        // 配置文件
        │      │
        │      ├─static                         // 静态资源
        │      └─templates                      // 模板资源
        └─test
            └─java
                └─com
                    └─wei
                            WeiSpringbootApplicationTests.java    // 测试类

2.4 文件解读

2.4.1 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.wei</groupId>
	<artifactId>wei-springboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>wei-springboot</name>
	<description>Demo project for Spring Boot</description>

	<!--Spring Boot父级依赖,会自动为我们引入相关Maven默认依赖,使用它之后,常用的包依赖可以省去version标签-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!--Spring Boot Maven插件-->
			<!--1.把项目打包成一个可执行的JAR,包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序-->
			<!--2.搜索public static void main()方法来标记为可运行类-->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

查看pom依赖,我们可以发现 spring-boot-starter-web 不仅包含 spring-boot-starter,还自动开启了web功能。所以,Spring Boot 提供了很多“开箱即用”的依赖模块,都是以spring-boot-starter-xxx作为命名。

具体引入了哪些默认依赖,可以查看电脑本地路径:
C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\2.0.4.RELEASE\spring-boot-dependencies-2.0.4.RELEASE.pom
这里写图片描述

2.4.2 Application启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 注解@SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置
 */
@SpringBootApplication
public class WeiSpringbootApplication {

    /**
     * 标准的Java应用的main的方法,主要作用是作为项目启动的入口
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(WeiSpringbootApplication.class, args);
    }
}

@SpringBootApplication:申明让Spring自动给程序进行必要的配置,等同于同时使用@Configuration,@EnableAutoConfiguration 和 @ComponentScan 三个配置。

  • @Configuration:标识这个类可以使用Spring IOC容器作为bean定义的来源,相当于XML中的beans标签
  • @EnableAutoConfiguration:让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,由于 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置
  • @ComponentScan:表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件(@Component , @Service , @Repository , @Controller 等),包括@Configuration类

至此,我们只是创建了一个名叫xxxx的 Spring Boot 工程。
但是,一个简单的基础的 Spring Boot 工程确实已经被我们创建完成了。

3.论证

3.1 跑起来吧

添加一个Controller类,通过发送http请求来验证一下我们的成果~

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * 注解@RestController,相当于@Controller和@ResponseBody两个注解的结合,使用这个注解的类里面的方法都以json格式输出
 */
@RestController
public class DemoController {
 
    @RequestMapping(value = "/demo/hi")
    public String getDemoHi() {
        String result = "Hello, Spring Boot";
        System.out.println(result);
        return result;
    }
 
}

写好后,我们启动主程序WeiSpringbootApplication。

从下图可以看出Web容器是Tomcat。因为没有对项目做任何配置,所以使用的是默认端口8080。
这里写图片描述
打开浏览器,输入URL地址 http://localhost:8080/demo/hi

如你所见,我们可以看到浏览器显示:

Hello, Spring Boot

如你所想,我们没有做任何的 web.xml 配置,也没有做任何的 spring mvc 的配置(Spring Boot帮你做了),也没有配置Tomcat(Spring Boot内嵌了Tomcat),完全体现不出我们对传统Spring的深深的造诣(邪恶之笑),有木有很简单~

3.2 单元测试

import com.wei.controller.demo.DemoController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoControllerTests {
 
    private MockMvc mockMvc;
 
    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.standaloneSetup(new DemoController()).build();
    }
 
    @Test
    public void testDemoHi() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/demo/hi").accept(MediaType.APPLICATION_JSON)).
                andExpect(MockMvcResultMatchers.status().isOk()).
                andDo(MockMvcResultHandlers.print()).andReturn();
    }
}

运行此测试用例前,需要先运行工程的启动类噢~ 相信你也会看到测试通过的报告

4.总结

官方网站:https://spring.io/projects/spring-boot

Spring Boot 稳定版可以参考1.5.15,2.0.4
Spring Boot 1.x 生命周期已结束,这意味着他们将在2019年8月1日前的 12 个月内逐渐停止维护。
Spring Boot 2.0 及更高版本需要 Java 8+

配置变得简单了,编码得的简单了,部署变的简单了。
她启了各种自动装配,不用写各种配置文件,引入相关的依赖就能迅速搭建起一个WEB工程。
就好像,当你用了IDEA,就再也不想回到Eclipse时代一样美妙。


但是在此,她的特性还没有完全显现,还需要我们进一步去发现,去实践,去验证,去总结

下一节,请继续关注:SpringBoot进击 | 二浅出:Spring Boot配置详解


猜你喜欢

转载自blog.csdn.net/itanping/article/details/82185595