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 Boot
底层基于Spring
框架 -
Spring Boot
开发web
应用时,可以选择性地采用Spring MVC
,Spring 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
:
将下载的压缩包在本机的目录下直接解压即可,解压后的目录如下图所示:
接下来为Gradle
配置环境变量:
在系统变量中新增一个GRADLE_HOME
变量,值为解压后的路径:
接下来还需要修改Path
变量,将Gradle
的bin
目录添加进去。在Path
变量的最后面添加%GRADLE_HOME%\bin
:
配置完成后查看一下本机安装的gradle
的版本信息,使用快捷键Win
+R
弹出的输入框中输入cmd
,然后打开命令窗口,在命令窗口中输入gradle -v
可以查看到gradle
的版本信息,如下图所示即表示配置成功:
Eclipse
打开Eclipse,进入如下设置页面:
开发环境搭建完成。
Spring Initializr
Spring Initializr
是一个开源的项目,基于这个项目,可以采用配置的形式初始化一个应用。
通过https://start.spring.io可访问Spring Initializr
界面,如下图所示:
该界面可提供Spring Boot
应用的生成
会生成如下工程:
将工程解压,解压后的目录如下图所示:
-
.gitignore
:版本管理的忽略文件 -
build.gradle
:gradle
项目的配置文件(核心) -
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')
}
对项目进行编译:
显示BUILD SUCCESSFUL
即为编译成功
Hello World
build.gradle
- 控制器
HelloController
- 测试用例
HelloControllerTest
- 配置
Gradle Wrapper
(可选) - 运行应用
创建项目
复制前面的initializr-start
项目,将副本重命名为hello-world
:
将项目导入Eclipse
导入项目如下:
修改源码
重命名文件:Application.java
一定要处于整个工程的根目录下,这样它才能根据配置去扫描子节点下的Spring
的Bean
。
修改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
的包:
新建HelloController.java:
代码如下:
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
的包:
新建测试类:
代码如下:
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 Boot的三种运行方式
java -jar xxx.jar
在命令行中编译项目:
进入项目中build
→libs
目录,可以看到应用的jar
包:
通过命令行运行jar
包:
运行结果如下:
访问http://localhost:8080/hello
页面:
在命令行使用快捷键Ctrl
+C
可将应用停止运行。
gradle bootRun
通过命令行运行:
IDE里面右键项目
访问http://localhost:8080/hello
页面: