什么是spring boot
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。
SpringBoot最明显的特点是,让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器,并装备启动类代码),可以快速开启一个Web容器进行开发。
Spring Boot的核心功能
- 可独立运行的Spring项目:Spring Boot可以以jar包的形式独立运行。
- 内嵌的Servlet容器:Spring Boot可以选择内嵌Tomcat、Jetty或者Undertow,无须以war包形式部署项目。
- 简化的Maven配置:Spring提供推荐的基础 POM 文件来简化Maven 配置。
- 自动配置Spring:Spring Boot会根据项目依赖来自动配置Spring 框架,极大地减少项目要使用的配置。
- 提供生产就绪型功能:提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。
- 无代码生成和xml配置:Spring Boot不生成代码。完全不需要任何xml配置即可实现Spring的所有配置。
spring boot入门实例
创建一个 Spring Boot 项目
创建完成后可以看到,pom.xml自动导入了一些东西,并自动创建了一个启动类,
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--父工程,父工程继承自 spring-boot-dependencies,
这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--项目的基本信息-->
<groupId>com.jie</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!--当前使用的jdk-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 测试启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--SpringBoot的打包插件:jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
父工程:父工程继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
启动器:只需要在项目里面引入启动器,相关场景的所有依赖都会导入进来。
启动类
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@ComponentScan告诉Spring 哪个packages同包或者子包下 的用注解标识的类 会被spring自动扫描并且装入bean容器。如果不指定,则默认从声明@ComponentScan所在类的package进行扫描。所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。
1.@EnableAutoConfiguration注解时则会将spring-boot-autoconfigure.jar/META-INF/spring.factories文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的value里的所有xxxConfiguration类加载到IOC容器中。而xxxAutoConfiguration类一般都会有@ConditionalOnxxx注解,通过这些条件注解来判断是否真正的创建xxxConfiguration对象。spring boot的各种spring-boot-starter-xxx.jar也正是居于此注解来达到自动装配的目的。
2.所有xxxConfiguration类一般都会有@EnableConfigurationProperties注解,将配置文件中的属性注入到配置类中。
推荐博客:SpringBoot自动装配原理
@SpringBootConfiguration注解内部有一个核心注解@Configuration,表示当前类为一个配置类(XML配置文件的注解表现形式),由此可见,@SpringBootConfiguration注解的作用与@Configuration注解相同,都是标识一个可以被组件扫描器扫描的配置类,只不过@SpringBootConfiguration是被Spring Boot进行了重新封装命名而已
SpringApplication.run(DemoApplication.class, args);
springboot启动类–SpringApplication.run()详解
配置文件
SpringBoot中提供一个名为application的全局配置文件,支持properteis格式和yaml( yml)格式。一般这些配置文件放在resources目录下面,在SpringBoot启动后就解析该配置文件。
推荐博客:Spring Boot 配置文件 yml与properties (二)
模板引擎
1、以前开发 web 项目时,只需将静态的 ".html” 页面后缀名修改为“.jsp”,然后在文件中加入 jsp 页面标识即可做 jsp 开发,然而 Spring Boot 项目采用打 jar 包的方式,默认使用的是内置的 Tomcat 服务器,所以默认是不支持 jsp 的,但可以使用其它的模板引擎。
2.Spring Boot 官方支持的模板引擎:Thymeleaf Templates、FreeMarker Templates、Groovy Templates 等模板引擎。
3.模板引擎的作用都是将模板(页面)和数据进行整合然后输出显示,区别在于不同的模板使用不同的语法,如 JSP 的 JSTL 表达式,以及 JSP 自己的表达式和语法,同理 Thymeleaf 也有自己的语法。
推荐博客:Spring Boot 2.x 集成 Thymeleaf 快速入门、静态资源映射规则
SpringBoot整合web开发
json
Spring Boot 返回 JSON 数据及数据封装
静态资源
Spring Boot 静态资源处理
Spring Boot无法访问css,js等静态资源的问题
文件下载
Spring Boot教程(十三):Spring Boot文件上传
全局异常统一处理
Springboot项目全局异常统一处理
自定义错误页面
SpringBoot多种自定义错误页面方式
Springboot错误页面和错误信息定制
spring boot 实现跨域
Spring Boot 系列:处理跨域请求
注册拦截器
Springboot中注册拦截器
SpringBoot——实现系统启动任务
SpringBoot中使用类型转换器
整合持久层
Spring Boot数据持久化之JdbcTemplate
Spring Boot多数据源配置之JdbcTemplate
最简单的SpringBoot整合MyBatis教程