SpringBoot
1.定义
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot 它本身是包容万象的,可以跟各种技术集成。成为SpringBoot全家桶。
SpringBoot可以理解为框架的框架(工具API)(Spring/SpringMVC/Mybatis),简化框架的调用
2.特点
- 创建独立的Spring应用程序
- 嵌入Tomcat、无需部署war文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标、健康检查和外部配置
3.核心思想
开箱即用!!!
SpringBoot与Spring无缝集成
4.框架之间的结构
5.pom.xml文件说明
5.1parent标签作用
<!--1.parent标签作用
parent标签中规定了Springboot与其他框架整合时候所用到的jar包的版本
的定义!!!. 这些jar包的版本都是经过官方测试的.几乎不会出现版本冲突.
总结: 版本的定义!!!
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
5.2maven坐标的作用
<!--2.maven的坐标-->
<!--项目的组ID-->
<groupId>com.jt</groupId>
<!--项目名称 一般都是英文-->
<artifactId>springboot_demo_1</artifactId>
<!--版本控制-->
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo_1</name>
<description>Demo project for Spring Boot</description>
5.3项目依赖
<!--jar包文件的依赖 如果需要某些功能,则使用依赖进行导入
按需导入.
大部分都进了定义,但是个别的需要手动导入(需要自定版本) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
5.4build标签作用
<!--maven通过插件对maven版本的springboot进行管理
体现: 项目打包/发布/测试等相关操作.
-->
<build>
<plugins>
<!--springboot专门为springboot的工程开发了一款项目管理插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5.5项目打包相关知识
- 命令
- 打包成功的效果
- clean表示删除target中的目录
- 一般项目的打包顺序1,build 2,clean 3.install
6.SpringBoot执行流程
6.1SpringBoot的启动流程
SpringBoot中通过元注解来声明注解的作用类型、生命周期、生成文档、以及可以被继承
@SpringBootConfiguration注解标识了主启动类是一个配置类,程序启动时可以加载小的、自定义的配置类
@ComponentScan因为SpringBoot的依赖性多,个别项目不需要,利用exclude来排除个别不需要的
@EnableAutoConfiguration体现了开箱即用原则的配置,进行里两项核心配置
1,@AutoConfigurationPackage动态获取主启动类所在的包路径,按照包路径来定义包扫描的位置,所以代码必须在主启动类的同包及子包下进行定义
2,@Import(AutoConfigurationImportSelector.class)导入加载器,通过加载器使启动项来执行,根据顺序执行加载器,找到对应启动项执行,不需要的加载器即跳过
6.2元注解
说明: 修饰注解的注解 称为元注解.
用法:
@Target(ElementType.TYPE) 注解对谁有效(类/方法/属性)
@Retention(RetentionPolicy.RUNTIME) 什么时期有效 整个运行期间有效
@Documented 是否需要生成文档.
@Inherited 该注解是否可以被继承 可以被继承
6.3@SpringBootConfiguration注解
说明: 该注解标识了main方法的类.相当于告诉程序 主启动类就是一个大的配置类.
将来主启动类执行时,会去扫描所有的小的配置类, 小的配置类由主启动类负责执行并且加载.
统一将对象交给spring容器管理.
6.4@ComponentScan
说明: SpringBoot启动时需要加载很多事先准备好的配置类,但是由于个别导入之后,会导致整个程序运行异常,所以需要排除个别启动项 例如
深入说明:Jar包具有依赖的传递性,通常都会进行引入,如果某些类影响程序,则需要手动排除,而不是排除整个Jar包文件
6.5@EnableAutoConfiguration
说明: 该注解表示自动化的配置.
包含:
1.@AutoConfigurationPackage 动态扫描主启动类的包路径.
注意事项: 以后写代码 在主启动类的同包及子包中编辑.
2.@Import(AutoConfigurationImportSelector.class)
自动化配置: 添加自动化的启动项 等待程序调用
<dependency>
<groupId>org.springframework.boot</groupId>
<!--
spring-boot-starter: springboot启动项
SpringBoot官网针对于该框架已经完成了"配置" 用户只需要简单的配置
既可以使用该功能.
-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
SpringBoot程序启动的流程:
选择选择器执行pom.xml文件中的启动项
6.6SpringBoot的部分启动项输出
Positive matches:
-----------------
AopAutoConfiguration matched:
- @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)
AopAutoConfiguration.ClassProxyingConfiguration matched:
- @ConditionalOnMissingClass did not find unwanted class 'org.aspectj.weaver.Advice' (OnClassCondition)
- @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)
DispatcherServletAutoConfiguration matched:
- @ConditionalOnClass found required class 'org.springframework.web.servlet.DispatcherServlet' (OnClassCondition)
- found 'session' scope (OnWebApplicationCondition)
7.创建SpringBoot项目
7.1创建项目
7.2选则Jar包依赖