Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

Spring Boot是什么

Spring基础上再次进行封装,更加简化企业级应用开发。打破Spring的整合,把各种框架的整合进行了封装,封装到starter类库中。

  • 更快的入门
  • 开箱即用:把与具体业务相关的框架集成到一个jar包(starter)里面,starter可以涵盖相关业务开发的所有功能
  • Spring血统:Spring具有的优点,Spring Boot统统都有;Spring不具备的优点,Spring Boot作为其补充
  • 零配置:最大化地减少配置,甚至做到零配置
  • 终极目标:简化开发,抛弃了传统Java EE项目繁琐的配置、学习过程,让企业级应用开发过程更简单

Spring Boot与其他框架的关系

Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

  • Spring Boot底层基于Spring框架
  • Spring Boot开发web应用时,可以选择性地采用Spring MVCSpring MVC也是基于Spring
  • Spring Cloud是一套分布式的微服务解决方案,里面涵盖的组件(模块)都基于Spring Boot来构建。Spring Cloud是由很多Spring Boot应用组成的

搭建开发环境

  • JDK8+
  • Gradle 4+
  • Eclipse 4.7+(也可选用别的IDE)

Gradle

Gradle官方下载链接:https://gradle.org/releases/

选择想要安装的发布版本,gradle-x.x-bin.zip是需要下载的安装发布版,gradle-x.x-src.zip是源码,gradle-x.x-all.zip则是下载全部的文件。

例如按照下图选择将会下载gradle-4.10.2-bin.zip
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
将下载的压缩包在本机的目录下直接解压即可,解压后的目录如下图所示:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
接下来为Gradle配置环境变量:

在系统变量中新增一个GRADLE_HOME变量,值为解压后的路径:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
接下来还需要修改Path变量,将Gradlebin目录添加进去。在Path变量的最后面添加%GRADLE_HOME%\bin
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
配置完成后查看一下本机安装的gradle的版本信息,使用快捷键Win+R弹出的输入框中输入cmd,然后打开命令窗口,在命令窗口中输入gradle -v可以查看到gradle的版本信息,如下图所示即表示配置成功:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

Eclipse

打开Eclipse,进入如下设置页面:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
开发环境搭建完成。

Spring Initializr

Spring Initializr是一个开源的项目,基于这个项目,可以采用配置的形式初始化一个应用。

通过https://start.spring.io可访问Spring Initializr界面,如下图所示:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
该界面可提供Spring Boot应用的生成
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
会生成如下工程:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
将工程解压,解压后的目录如下图所示:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

  • .gitignore:版本管理的忽略文件
  • build.gradlegradle项目的配置文件(核心
  • gradlew:在Linux下的执行脚本(基本不会用到)
  • gradlew.bat:在Windows下的执行脚本(基本不会用到)
//buildscript代码块中脚本优先执行
buildscript {

    //ext用于定义动态属性
	ext {
		springBootVersion = '2.0.0.M4'
	}

    //使用了Maven的*仓库及Spring自己的仓库(也可以指定其他仓库)
	repositories {
        //*仓库,因为速度慢,在这里注释掉,改用其他国内镜像仓库
		//mavenCentral()
        //因为本项目使用的是2.0.0.M4版本,不是稳定版本,所以不能保证在镜像仓库中能够找到,所以需要保留Spring自己的仓库
        maven{ url "https://repo.spring.io/snapshot" }
        maven{ url "https://repo.spring.io/milestone" }
        //阿里云镜像仓库
        maven{ url "http://maven.aliyun.com/nexus/content/groups/public/" }
	}

    //依赖关系
	dependencies {
        //classpath声明了在执行其余的脚本时,ClassLoader可以使用这些依赖项
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

//使用插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

//指定了生成的编译文件的版本,默认是打成了jar包
group = 'com.study.spring.cloud'
version = '0.0.1-SNAPSHOT'

//指定编译.java文件的JDK版本
sourceCompatibility = 1.8

//使用了Maven的*仓库及Spring自己的仓库(也可以指定其他仓库)
repositories {
    //mavenCentral()
    maven{ url "https://repo.spring.io/snapshot" }
    maven{ url "https://repo.spring.io/milestone" }
    maven{ url "http://maven.aliyun.com/nexus/content/groups/public/" }
}

//依赖关系
dependencies {

    //该依赖用于编译阶段
	compile('org.springframework.boot:spring-boot-starter-web')

    //该依赖用于测试阶段
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

对项目进行编译:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
显示BUILD SUCCESSFUL即为编译成功

Hello World

  • build.gradle
  • 控制器HelloController
  • 测试用例HelloControllerTest
  • 配置Gradle Wrapper(可选)
  • 运行应用

创建项目

复制前面的initializr-start项目,将副本重命名为hello-world
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

将项目导入Eclipse

Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
导入项目如下:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

修改源码

重命名文件:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Application.java一定要处于整个工程的根目录下,这样它才能根据配置去扫描子节点下的SpringBean

修改build.gradle配置:

//指定了生成的编译文件的版本,默认是打成了jar包
group = 'com.study.spring.cloud'
version = '0.0.1-SNAPSHOT'

改为

//指定了生成的编译文件的版本,默认是打成了jar包
group = 'com.study.spring.cloud'
version = '1.0.0'

开发controller

新建一个controller的包:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
新建HelloController.java:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
代码如下:

package com.study.spring.cloud.weather.controller;

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

//用于处理rest请求的controller
@RestController
public class HelloController {

	@RequestMapping("/hello")
	public String hello() {
		return "Hello World!";
	}
	
}

编写测试用例

新建一个controller的包:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
新建测试类:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
代码如下:

package com.study.spring.cloud.weather.controller;

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

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
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;

//junit的规范
@RunWith(SpringRunner.class)
//Spring Boot的测试
@SpringBootTest
//MVC开发Mock测试
@AutoConfigureMockMvc
public class HelloControllerTest {

	@Autowired
	private MockMvc mockMvc;
	
	@Test
	public void testHello() throws Exception {
		mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
		.andExpect(status().isOk())
		.andExpect(content().string(equalTo("Hello World!")));
	}
	
}

运行测试类:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

Spring Boot的三种运行方式

java -jar xxx.jar

在命令行中编译项目:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
进入项目中buildlibs目录,可以看到应用的jar包:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
通过命令行运行jar包:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
运行结果如下:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
访问http://localhost:8080/hello页面:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
在命令行使用快捷键Ctrl+C可将应用停止运行。

gradle bootRun

通过命令行运行:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目

IDE里面右键项目

Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目
访问http://localhost:8080/hello页面:
Spring Cloud学习笔记1——Spring Boot 简介、环境搭建、入门项目