参考文档:springboot官方中文文档
开发工具:IntelliJ IDEA
入门
springboot介绍
Spring Boot帮助你创建可以运行的独立的、基于Spring的生产级应用程序。 我们对Spring平台和第三方库采取了有主见的观点,这样你就能以最少的麻烦开始工作。 大多数Spring Boot应用程序只需要很少的Spring配置。你可以使用Spring Boot来创建Java应用程序,可以通过使用 java -jar 或更传统的war部署来启动。
我们的主要目标是:
1、为所有的Spring开发提供一个根本性的更快、更广泛的入门体验。
2、开箱即用,但随着需求开始偏离默认值,请迅速摆脱困境。
3、提供一系列大类项目常见的非功能特性(如嵌入式服务器、安全、度量、健康检查和外部化配置)。
4、绝对没有代码生成(当不以原生镜像为目标时),也不要求XML配置。
系统要求
springboot2.x 需要java1.8+
Spring Boot 3.x 需要 Java 17 ,并且可以兼容到Java 19,包括Java 19。还需要 Spring Framework 6.0.4 或以上版本。
为以下构建工具提供了明确的构建支持。
构建工具 版本
Maven 3.5+
Gradle 7.x (7.5 or later)
Servlet 容器
Spring Boot支持以下嵌入式Servlet容器。
Servlet 容器 | Servlet 版本 |
---|---|
Tomcat 10.0 | 5.0 |
Jetty 11.0 | 5.1 |
Undertow 2.2 (Jakarta EE 9 variant) | 5.0 |
你也可以将Spring Boot应用部署到任何兼容Servlet 5.0+的容器中。
创建项目
使用idea创建
打开idea —》file—》new----》project —》maven
项目创建之后创建主类(启动类)
编辑POM
继承parent可有效处理开发过程中springboot其他依赖包版本冲突问题,在使用springboot其他的依赖时不需要注明版本,只需要引入依赖即可,如果需要更换版本,在当前pom中添加
如:
默认加载mysql是8.0.28,要换成6.0.2,重写即可
项目结构
编写控制器
启动项目,访问:localhost:8080/hello
注解说明:
@RestController 是
@Controller和@RequestBody 的组合
现在普遍开发都是前后分离式的开发,不返回页面(html、vue、jsp),所以可直接用该注解,如果需要返回页面和非页面数据则分开使用
@SpringBootApplication是
@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解的组合
@SpringBootApplication标识是springboot项目,是spingboot项目的主类(启动类)
默认扫描的包是主类所在的包路径下的子类或者更深层级的,如果更改扫描包路径,添加注解参数@SpringBootApplication(scanBasePackages = “com.wdz”),即可
springboot的自动装配
springboot项目中使用到的spring-boot-start-*
默认配置都在org.springframework.boot.autoconfigure包下
在使用的时候直接在pom中添加依赖,配置文件中添加对应配置即可,
自动配置是按需加载的,只有在pom中添加过才会装配
配置绑定
使用:@Component+@ConfigurationProperties(prefix = “***”)
配置文件:
测试类
测试结果:
使用@EnableConfigurationProperties注解进行绑定
一样可以访问到配置数据
自动装配
复核注解 @SpringBootApplication
包含:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan@SpringBootConfiguration
它的实现是@Configuration,注明使用类是一个配置类
@ComponentScan
主要作用是包扫描类,默认扫描的包是从主类同级别的位置开始
@EnableAutoConfiguration
主要包含:
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@AutoConfigurationPackage
AutoConfigurationPackage引入了一个Registrar的类,然而这个类在启动的时候会把扫描路径下的类注册到容器中
##### @Import({AutoConfigurationImportSelector.class})
AutoConfigurationImportSelector这个类下的方法:
其中:
List configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
获取所有的候选配置,然后
对候选配置进行增减操作(排除指定的类或者加载指定的类)
条件装配(满足指定条件之后才会正式的添加到容器中)
自动装配主要功能还是各个配置类上的注解:主要以Conditional开头的注解。
大部分配置都是一用户配置为主,如果没有配置springboot才会使用默认的配置
指定包含某些类,某些配置的时候加载等
如AOP:
包含spring.aop 开头的配置才会装配,不包含的话当前类的方法都不会加载
自主配置提示
在yml配置文件中自定义的配置没有联想提示,可添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
由于当前依赖生产环境中不需要,所以添加打包排除
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>