SpringBoot个人总结
SpringBoot
一 特点
其最主要作用就是帮助开发人员快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到****开箱即用****,迅速上手,让开发人员关注业务而非配置。
自动配置 : 不需要再关注各个框架的整合配置, springboot全部已经配置好了
起步依赖 : 我们在需要使用某个框架的时候, 直接添加这个框架的启动器依赖即可 , 不需要在关注jar包的冲突和整合
习惯优于配置 约定大于配置
二 快速搭建项目
依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.6.RELEASE</version> </parent> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>
启动类
@SpringBootApplication @SpringApplication.run(Application.class,orgs);
配置文件
@Value(“${xxx}”)
properties
yml YAML是一种配置文件格式
spring:jdbc:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql:///springboot_01username: rootpassword: root
profile
spring:profiles:active: dev 激活不同配置文件
三 SpringBoot自动配置原理
@SpringBootApplication注解
· @SpringBootConfiguration : 代表这个类就是一个配置类 , 本质上就是一个@Configuration注解
· @ComponentScan : 组件扫描, 默认扫描启动类所在包及子包下的类身上的注解
· @EnableAutoConfiguration : 自动配置注解 , 添加了此注解会自动去读取spring.factories配置文件中的自动配置类
@ConfigurationProperties 将一些配置属性批量注入到bean对象
@ConfigurationProperties(prefix = “xxx”) A类 prefix读取属性文件中前缀为xxx的值 前缀的属性名称和配置文件中的key必须保持一致才可以注入成功
@EnableConfigurationProperties(A类.class)
条件注解配置
- @ConditionOnBean 存在某个Bean 配置生效
- @ConditionOnProperty 存在某个Property配置生效
- @ConditionOnClass 存在某个类 配置生效
自动配置原理 重点
spring.factories 这个里面有127个配置文件 具体流程SpringApplication 类构建过程中setInitialzers() //初始化和加载配置文件的信息getspringFactoriesgetInstance(ApplicationContextInitializer.class);loadFactoryNames 加载FactoryName;利用createSpringFactoriesInstances将这些加载到的类名进行实例化createSpringFactoriesInstances 将加载的类名进行实例化继续跟进loadFactoryNames:return loadSpringFactories(classLoader).getOrderFactories() ->classLoader.getResources(FACTORIES_RESOURCE_LOCATION);此处会利用类加载器加载一个文件:META-INF/spring.factoriesClassLoader默认是从classpath下读取文件SpringBoot进行初始化会加载所有的META-INF/spring.factroies文件,包括jar包
Quzrtz 定时任务
读取自动配置类:
- 打开Spring.factories
- EnableAutoConfiguration接口为key 的一系列配置 ,key对应的值 就是所有的自动配置类 在jar包中可以找到。
默认属性配置
- 我们配置视图解析器的时候需要配置前缀和后缀 , 那么这些配置在哪配置的呢:通过源码发现, 这个配置是从this.mvcProperties.getView()中读取的 ,this.mvcProperties
- 这个mvcProperties就是个变量,变量中又有一个view类型的变量
- 这个变量中配置的就是前缀和后缀
覆盖默认属性配置
- 配置类使用ConfigurationProperties进行读取文件进行配置
- 所以在配置文件中修改配置文件的前缀就可以进行修改信息:spring.mvc.xxxx;
@SpringBootTest:自动侦测并加载@SpringBootApplication 或者@SpringBootConfiguration中的配置 默认web环境为MOCK 不监听任务端口
四 搭建SpringBoot项目
导入依赖
<dependency><groupId>com.atguigu</groupId><artifactId>spring-boot-jdbc-starter</artifactId><version>1.0-SNAPSHOT</version> </dependency>application.ymlspring:jdbc:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql:///springboot_01username: rootpassword: rootprofiles:active: datasource
自动配置类
@SpringBootConfiguration @EnableConfigurationProperties(DataSource.class) 根据配置属性类装配对象的属性
属性配置类
@ConfigurationProperties(prefix = "spring.jdbc.datasource") 读取配置文件
编写自动配置属性文件
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=xx.xxx.xx.DataSourceAutoConfiguration
配置连接池信息
五 SpringBoot常用启动器
静态资源目录
- classpath:/META/INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
自定义拦截器
编写一个拦截器 实现HandlerInterceptor
通过实现WebMvcConfigures注册拦截器
@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**");}
SpringBoot整合JPA
application.yml
logging:level:com.atguigu.dao: debug # 配置日志 spring:datasource:username: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverjpa:database: mysqlshow-sql: truegenerate-ddl: truehibernate:ddl-auto: updatenaming_strategy: org.hibernate.cfg.ImprovedNamingStrategy server:port: 18081
配置实体类
@Entity @Entity说明这个class是实体类,并且使用默认的orm规则,即class名就是数据库表中表明,class字段名即表中字段名。@Entity注解指明这是一个实体Bean。
@Table注解默认情况下只会完成表和实体之间的映射,声明才对象映射到数据库的数据表,通过它可以为实体指定表(table)
@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键、@GeneratedValue提供了主键的生成策略。
@Id 标识为主键 @Column 标识实体类中的属性与数据表的字段的对应关系
六 SpringBoot综合案例
启动类
@SpringBootApplication @MapperSacn(basePackes="") 扫描dao层 Mapper接口以及映射配置 @EnableTransactionManagement 配置自动注解
application.yml
实体类user
Mapper接口以及映射配置
service serviceImpl
七 SpringBoot其他组件
- SpringBoot Actuator
介绍:Spring Boot Actuator是SpringBoot自带的一个组件 , 可以帮助我们监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等
配置信息
management:endpoints:web:exposure:include: '*' # 对外暴露的访问入口 , 默认是/health和/infobase-path: /monitor # 默认是actuatorendpoint:health:show-details: ALWAYS # 显示所有健康状态server:port: 9999
SpringBoot Admin服务端
application.yml
spring:application:name: admin-server server: port: 8769
启动类:@EnableAdminServer
SpringBoot Admin客户端
application.yml
server:port: 9999 spring:application:name: admin-clientboot:admin:client:url: http://localhost:8769 # 指定注册地址 , Spring Boot Admin Server地址 management:endpoints:web:exposure:include: '*' endpoint:health:show-details: ALWAYS
部署打包
- maven ->package
- java -jar springboot_01-SNAPASHOT.jar 运行命令
SpringBoot个人总结相关推荐
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot部署脚本,拿走即用!
一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可. # 若使用jenkins等工具 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- springboot整合swagger2之最佳实践
来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成.功能测试功能框架. 一 ...
- SpringBoot中实现quartz定时任务
Quartz整合到SpringBoot(持久化到数据库) 背景 最近完成了一个小的后台管理系统的权限部分,想着要扩充点东西,并且刚好就完成了一个自动疫情填报系统,但是使用的定时任务是静态的,非常不利于 ...
- Springboot 利用AOP编程实现切面日志
前言 踏入Springboot这个坑,你就别想再跳出来.这个自动配置确实是非常地舒服,帮助我们减少了很多的工作.使得编写业务代码的时间占比相对更大.那么这里就讲一下面向切面的日志收集.笔者使用lomb ...
- 【Springboot】日志
springBoot日志 1.目前市面上的日志框架: 日志门面 (日志的抽象层): JCL(Jakarta Commons Logging) ...
- 【springboot】配置
配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: •application.properties •application.yml 配置文件的作用:修改SpringBoot自 ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
最新文章
- java连接mongodb_java连接mongodb源码解读
- SpringBoot 序列化与反序列化日期类型参数
- 绘制Nine-Patch图片
- 机器学习和数据科学领域必读的10本免费书籍
- 风控人最容易被误解的一个风险管理板块
- Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
- Android NDK学习记录(一)
- Unity3D shader简介
- 哲学与科学的批判性思维工具
- 如何解压 GZ 文件
- 大创笔记——硬切法实现基于单片机的人机交互系统
- 【CSS 书写模式 (Writing modes )】
- win7工作组看不到“其他电脑”的解决方法
- 使用poi操作word
- 海思3516DV300系列HiPQTools工具ISP图像调试_AWB校定
- Battery_MSCCC:基于MATLAB/Simulink的具有多级(5级)恒流控制的电池充放电仿真模型
- 如何在 SAP ABAP 系统中使用 Adobe Form
- kafka动态权限认证(SASL SCRAM + ACL)
- 获取蓝奏网盘无密码下载链接分析思路
- 视频营销终极指南,独立站卖家必看