前言
springboot2.0的新特性:
- java8+
- 底层框架:spring framework 5.0.x
- 全新特性:Web Flux
Web Flux优势:
- java8 lambda
- 响应编程:Reactive Streams
- 异步编程:servlet3.1或异步NIO
1. 起步
https://start.spring.io/
从上述入口快速搭建。Dependency
可以选择ReactiveWeb
/springmvc
等(或后续在pom.xml配置依赖即可)。
选择springmvc依赖后的自动生成的pom如下:
1. pom说明
4.0.0
cn.whbing.learn.springboot
springboot-demo
0.0.1-SNAPSHOT
jar
springboot-demo
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
说明:
- 父依赖使用自带的
主要用于引入默认包,及管理依赖版本。
spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖。其实,spring-boot依赖关系如下:spring-boot-dependencies
是顶级依赖。通过点击spring-boot-start-parent
查看:
org.springframework.boot
spring-boot-dependencies
2.0.4.RELEASE
../../spring-boot-dependencies
spring-boot-starter-parent
pom
spring-boot-dependencies
/\
/ \
spring-boot-parent spring-boot-starter-parent
-
两个核心依赖包:
-
spring-boot-starter-web
: 核心模块,包括自动配置支持、日志和YAML; -
spring-boot-starter-test
: 测试模块,包括JUnit、Hamcrest、Mockito。
-
- 子依赖关系链接:
spring-boot-dependencies下有哪些子模块?
springboot-starter有哪些启动模块? - 如何添加自己的父依赖,只用默认的依赖管理?
-
Spring Boot Maven插件
参考 Spring Boot干货系列:(一)优雅的入门篇
可以使用的命令(在配置插件pom的目录下):mvn spring-boot:run
spring-boot-maven-plugin
插件提供了许多方便的功能:- 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序。
- 搜索
public static void main()
方法来标记为可运行类。
2. web项目
1.无需springMVC配置web.xml
、无需配置tomcat
、无需组件扫描等,直接写一个class,加上controller注解即可:
package cn.whbing.springboot.web;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
注:8080端口若显示被占用。可以在application.properties
换一个端口,直接配置:
server.port=8888
或者关闭进程
kill -9 port
2.启动
mvn spring-boot:run
即可启动web页面。
3. 打包
web模块的打包支持jar
、war
等。都是支持java -jar
命令的。
注意:将package
改成war
后,需要建立webapp
/WEB_INF
/web.xml
目录和文件(空的也行,java同级)。
即如下目录:
webapp
|-WEB_INF
|-web.xml
1. 打jar包示例
在有spring-boot-maven-plugin
的同级,执行打包命令
mvn -Dmaven.test.skip clean package
会将主包和依赖打进jar包。--> springboot-demo-0.0.1-SNAPSHOT.jar
将其解压后发现MANIFESTI.MF
已经包含了入口文件。
Start-Class: cn.whbing.springboot.SpringbootDemoApplication
和使用assembly
用自带的jar-with-dependences
相同。
此外,除了默认寻找主函数入口外,我们可以手动指定入口:
org.springframework.boot
spring-boot-maven-plugin
cn.whbing.springboot.SpringbootDemoApplication
运行:
java -jar springboot-demo-0.0.1-SNAPSHOT.jar
即可启动web页面。
2. 打war包示例
java同级目录下要加入
webapp
|-WEB-INF
|-web.xml
同样使用java -jar XX.war
3. 说明:打包依赖
多模块之间有依赖,直接打包会出错。这时,我们需要在build
中在此加入依赖:
org.springframework.boot
spring-boot-maven-plugin
xx...
xx...
上述方式并不可取。我们需要将该打包插件放在最外层的依赖模块(如B-->A--C,我们就将插件放B的pom中),打包会将所有依赖都打入。