Springboot概述
by_小凡ffffff
1.Springboot概述
目的
简化新 Spring 应用的初始搭建以及开发过程。就像Maven整合了所有的 Jar 包,Spring Boot 整合了所有的框架。
核心思想
约定优于配置! 或者说:约定>注解>配置。Spring Boot 所有开发细节都是依据此思想进行实现。有了它,几乎所有的配置文件都被抛弃了。
2.利用springboot进行编程的四个步骤(重点)
(1)maven的pom.xml文件中添加Spring Boot相关依赖
pom.xml的作用:该项目中所有依赖的jar包的配置。
<!-- 引入Spring Boot依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3.RELEASE</version>
</parent>
<dependencies>
<!-- 引入Web场景依赖启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
-
父项目管理依赖:管理各个依赖的版本号
-
web场景依赖:集成了web使用场景的starter依赖集
(测试和打包这些依赖都可以没有,可Springboot必须要有这两个核心依赖)
(2)编写主启动程序类
创建一个SpringBoot的应用程序,标明我是主启动类,则要在主启动类上标明注解:@Springbootapllication(它本身就包含了三个注解);另外这个主启动类里包含了主函数:Springapplication.run
命名一般为:程序名application.java 位置一般在包的根目录下
@SpringBootApplication //标记该类为主启动类
public class SampleSpringBootApplication {
public static void main(String[] args){
SpringApplication.run(SampleSpringBootApplication.class,args); //Springapplication.run方法启动主程序类
}
}
(3)全局配置文件application. properties
- 设置端口号
- 连接数据库,配置连接拿个数据库,数据源,采用的驱动类是哪一个。(了解即可)
(4)创建一个用于Web访问的Controller
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello Spring Boot";
}
}
项目位置示意图
3.springboot原理分析
在这里对上面的内容细说:
(1)pom文件:
主要是四部分:
-
项目元数据信息:创建时候输入的Project Metadata 部分,也就是Maven项目的基本元素, 包括groupId、artifactId、version、name、description等
-
parent:继承spring-boot-starter-parent的依赖管理,约定好一些常用依赖项的版本号,包括 Spring Boot、Spring Framework、Spring Security 等。(但是,对于一些与 Spring Boot 集成的第三方库,如 MyBatis、Hibernate 等,其版本号可能不是与 Spring Boot 的版本完全匹配的,所以仍然需要在项目中指定这些库的版本号。)
-
denpendencies:项目具体依赖,这里包含spring-boot-starter-web用于实现HTTP 接口(该依赖中包含了SpringMVC),官网的描述是:使用Spring MVC构建Web(包括RESTful)应用程序的入门者,是Tomcat作为默认嵌入容器。spring-boot-starter-test是用于编写单元测试的依赖包。spring-boot-starter-×××(场景名) 是各场景下的依赖包的合集。
-
build:构建配置部分,默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring boot 应用程序打包成 JAR 来直接运行。
两个主要依赖
- spring-boot-starter-parent依赖
spring-boot-starter-parent是通过< parent >标签对一些常用技术框架的依赖文件进行了统一版本号管理:
<!-- Spring Boot父项目依赖管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.14</version>
<relativePath/>
</parent>
(以后导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了;)
-
spring-boot-starter-web依赖,启动器:spring-boot-starter
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
springboot-boot-starter-xxx:就是spring-boot的场景启动器
SpringBoot将所有的功能场景都抽取出来,做成一个个的starter (启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来 。相当于各场景下的依赖包的合集。
(2)springboot自动配置:主启动类×××application.java
@SpringBootApplication //标记该类为主启动类
public class SampleSpringBootApplication {
public static void main(String[] args){
SpringApplication.run(SampleSpringBootApplication.class,args); //Springapplication.run方法启动主程序类
}
}
核心注解:@SpringBootApplication
@SpringBootApplication注解是一个组合注解,包含@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个核心注解
-
@Configuration,说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件;
-
@EnableAutoConfiguration注解 作用:开启自动配置功能。以前需要人工配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效
-
ComponentScan注解这个注解在Spring中很重要 ,它对应XML配置中的元素。开启组件扫描后,在对用的bean前面加对应的注解相当于取代了传统spring中在application.xml中配置bean的繁琐过程。
作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
SpringApplication启动类主要做了以下四件事:
-
推断应用的类型是普通的项目还是Web项目
-
查找并加载所有可用初始化器 , 设置到initializers属性中
-
找出所有的应用程序监听器,设置到listeners属性中
-
推断并设置main方法(run方法对应的方法)的定义类,找到运行的主类(程序启动类)
4.springboot配置文件分析
- Spring Boot使用一个全局的配置文件,全局配置文件的可以对一些默认配置值进行修改
application.properties or
application.yml
-
配置文件加载位置
创建Spring Boot项目时,默认 resources 目录下就有一个application.properties 文件
-
主要作用:
设置端口号+数据库连接信息
行修改
application.properties or
application.yml
-
配置文件加载位置
创建Spring Boot项目时,默认 resources 目录下就有一个application.properties 文件
-
主要作用:
设置端口号+数据库连接信息