Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”...Most Spring Boot applications need very little Spring configuration.
Spring Boot
和Spring
的关系就是整车和零部件的关系,它们不是取代关系。
Spring 框架一直是 Java EE 开发的王者,但是由于其有大量的配置,因而导致学习曲线较为陡峭。Spring 在 2014 年推出了 Spring Boot,Spring Boot 提供了如下功能来简化 Spring 的开发:
-
AutoConfiguration 自动配置
Spring Boot 为绝大多数的常用开发组件提供了自动配置,通过自动扫描+条件装配实现的。如 JDBC、JPA、Kafka、Elasticsearch、Spring MVC、Spring Security、Spring Integration 及 Spring Batch
-
starter 项目
Spring Boot 是一个基于 Spring 的套件,它帮我们预组装了 Spring 的一系列组件,以便以尽可能少的代码和配置来开发基于 Spring 的 Java 应用程序
-
依赖版本管理
Spring Boot 提供了全局依赖版本支持,只需声明 Spring Boot 的版本号即可,无须对 Spring Boot 支持的组件技术声明版本信息,依赖组件会直接得到最佳的依赖版本
-
独立运行
Spring Boot 支持将整个应用打包成 jar 包形式,jar 包中内嵌了 Servlet 容器(Tomcat、Jetty等),可独立运行
-
开发者工具
Spring Boot 提供了开发者工具,只要添加 spring-boot-devtools 依赖,就可以在开发过程中提供自动重启功能,减少编译等待时间
-
Spring Boot Actuator
为生产时对应用的监控提供了支持
JDK 1.8+
初始化 spring boot 项目,有多种方式,例如:
https://start.aliyun.com/bootstrap.html
提供功能更丰富的在线配置项
选择 File -> New -> Project
菜单,创建项目
-
name
项目名称
-
location
代码存储位置
-
type
项目构建工具,Maven or Gradle
-
java
版本,例如
8
、11
、16
,这里采用的11
-
group
组织域名
-
artifact
应用名称
点击下一步,选择:
- spring boot 版本号为
2.5.3
- 依赖组件
Spring Web
再点击完成即可。
此时新建了一个 springboot
的初始化项目,标准的 Maven
目录结构如下:
springboot
├── pom.xml
├── src
│ └── main
│ ├── java
│ └── com.langyastudio.springboot
│ └── ├── Application.java
│ └── resources
│ ├── application.yml
│ ├── static
│ └── templates
└── target
注意到几个文件:
application.yml
Spring Boot 默认的配置文件,文件名必须是 application.yml
而不是其他名称。YAML格式比 key=value
格式的 .properties
文件更易读
static 文件夹
静态资源目录,如 js、css、img 等
template 文件夹
html 模板目录
Application.java
应用程序入口,Spring Boot 要求 main()
方法所在的启动类必须放到根 package 下,命名不做要求
/**
* 应用程序入口
*/
@SpringBootApplication
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
启动 Spring Boot 应用程序只需要一行代码加上一个注解 @SpringBootApplication
,该注解实际上包含了:
- @SpringBootConfiguration
- @Configuration
- @EnableAutoConfiguration
- @AutoConfigurationPackage
- @ComponentScan
这样一个注解就相当于启动了 自动配置
和自动扫描
。
pom.xml
maven 配置文件
-
parent
继承的父组件
-
propeties
属性描述,如 java 版本号。涉及属性都可以统一定义在这里
-
dependencies
依赖库。引入
spring-boot-starter-web
时,其实自动创建了(AutoConfiguration ):ServletWebServerFactoryAutoConfiguration
:自动创建一个嵌入式Web服务器,默认是TomcatDispatcherServletAutoConfiguration
:自动创建一个DispatcherServlet
HttpEncodingAutoConfiguration
:自动创建一个CharacterEncodingFilter
WebMvcAutoConfiguration
:自动创建若干与MVC相关的Bean- ...
点击 IDE 工具栏上的 run or debug,即可运行 spring boot 服务
Console 控制台显示结果如下:
参考文档:廖雪峰、《从企业级开发到云原生微服务:Spring Boot实战 》等