一、首要特性
创建独立的Spring应用,是SpringBoot的首要特性
二、应用类型
Web应用:
SpringBoot 1.x版本中有且仅有Servlet容器实现,包括传统的Servlet和Spring Web MVC,总2.0版本开始增加了Reactive Web容器实现,即Spring 5.0 WebFlux,所以在SpringApplication API上薪资了setWebApplicationType()方法,允许程序显示的设置Web应用的枚举类型。
枚举类型如下:
NONE:非Web应用
SERVLET:
REACTIVE WEB:
非Web应用:
主要用于服务提供、调度任务、消息处理等场景;
在传统的Spring应用中,外置容器需要启动脚本引导,随着生命周期的回调执行Spring上下文的初始化,比较有代表性的是SpringWeb的ContextLoaderListener和Web MV中的DispatchServlet,前者利用ServletContext生命周期构建Web Root Spring上下文,后者结合 Servlet生命周期创建DispatchServlet的Spring应用上下文。无论何种方式,均属于被动的回调执行,这也是为什么它们并没有完整的应用主导权的原因。
然而当SpringBoot出现嵌入式容器启动方式后,嵌入式容器称为应用的一部分,从本质上来说,它属于Spring应用上下文中的组件Beans,这些组件和其他组件均有自动装配特性组装成Spring Bean定义BeanDefinition,随着Spring应用上下文启动而注册并初始化。驱动Spring应用上下文启动的核心组件则是SpringBoot核心API,SpringApplication。
三、应用创建
(1)命令方式:
mvn archetype:generate -DgroupId=thinking-in-spring-boot -DartifactId=first-spring-boot-application -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false -Dpackage=thinking.in.spring.boot
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
运行springboot:mvn spring-boot:run
(2)图形化界面:
https://start.spring.io/
(3)创建Spring Boot应用可执行JAR:
官方文档告知开发人员构建可执行jar的前提是添加spring-boot-maven-plugin到pom.xml文件中。
SpringBoot可执行JAR资源结构:
BOOT-INF/classes 目录存放应用编译后的class文件;
BOOT-INF/lib 目录存放应用依赖的jar包;
META-INF/目录存放应用相关的元信息,如MANIFEST.MF
org/目录存放springboot 相关的class文件