为了后继的 Spring Cloud 学习和进阶,我们需要先行了解 Spring Boot。
Spring Boot 是由 Pivotal 团队提供的全新框架。她:
做为一个优秀的轻量级框架,她的特点突出:
既然 Spring Boot 那么好,那我们就马上来一发吧~
我们需要:
打开 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 就映入眼帘。
└─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 // 测试类
<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.0modelVersion>
<groupId>com.weigroupId>
<artifactId>wei-springbootartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>wei-springbootname>
<description>Demo project for Spring Bootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.4.RELEASEversion>
<relativePath/>
parent>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
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
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 三个配置。
至此,我们只是创建了一个名叫 xxxx 的 Spring Boot 工程。
但是,一个简单的基础的 Spring Boot 工程确实已经被我们创建完成了。
添加一个 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 的深深的造诣(邪恶之笑),有木有很简单~
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();
}
}
运行此测试用例前,需要先运行工程的启动类噢~ 相信你也会看到测试通过的报告
官方网站: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配置详解