SpringBoot

一 特点

  1. 其最主要作用就是帮助开发人员快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到****开箱即用****,迅速上手,让开发人员关注业务而非配置。

  2. 自动配置 : 不需要再关注各个框架的整合配置, springboot全部已经配置好了

    起步依赖 : 我们在需要使用某个框架的时候, 直接添加这个框架的启动器依赖即可 , 不需要在关注jar包的冲突和整合

    习惯优于配置 约定大于配置

二 快速搭建项目

  1. 依赖

    <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>
    
  2. 启动类

    @SpringBootApplication
    @SpringApplication.run(Application.class,orgs);
    
  3. 配置文件

    1. @Value(“${xxx}”)

    2. properties

    3. yml YAML是一种配置文件格式

      spring:jdbc:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql:///springboot_01username: rootpassword: root
      
    4. profile

      spring:profiles:active: dev 激活不同配置文件

三 SpringBoot自动配置原理

  1. @SpringBootApplication注解

    · @SpringBootConfiguration : 代表这个类就是一个配置类 , 本质上就是一个@Configuration注解

    · @ComponentScan : 组件扫描, 默认扫描启动类所在包及子包下的类身上的注解

    · @EnableAutoConfiguration : 自动配置注解 , 添加了此注解会自动去读取spring.factories配置文件中的自动配置类

  2. @ConfigurationProperties 将一些配置属性批量注入到bean对象

  3. @ConfigurationProperties(prefix = “xxx”) A类 prefix读取属性文件中前缀为xxx的值 前缀的属性名称和配置文件中的key必须保持一致才可以注入成功

    @EnableConfigurationProperties(A类.class)

  4. 条件注解配置

    1. @ConditionOnBean 存在某个Bean 配置生效
    2. @ConditionOnProperty 存在某个Property配置生效
    3. @ConditionOnClass 存在某个类 配置生效
  5. 自动配置原理 重点

    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 定时任务

  6. 读取自动配置类:

    1. 打开Spring.factories
    2. EnableAutoConfiguration接口为key 的一系列配置 ,key对应的值 就是所有的自动配置类 在jar包中可以找到。
  7. 默认属性配置

    1. 我们配置视图解析器的时候需要配置前缀和后缀 , 那么这些配置在哪配置的呢:通过源码发现, 这个配置是从this.mvcProperties.getView()中读取的 ,this.mvcProperties
    2. 这个mvcProperties就是个变量,变量中又有一个view类型的变量
    3. 这个变量中配置的就是前缀和后缀
  8. 覆盖默认属性配置

    1. 配置类使用ConfigurationProperties进行读取文件进行配置
    2. 所以在配置文件中修改配置文件的前缀就可以进行修改信息:spring.mvc.xxxx;
  9. @SpringBootTest:自动侦测并加载@SpringBootApplication 或者@SpringBootConfiguration中的配置 默认web环境为MOCK 不监听任务端口

四 搭建SpringBoot项目

  1. 导入依赖

    <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
    
  2. 自动配置类

    @SpringBootConfiguration
    @EnableConfigurationProperties(DataSource.class) 根据配置属性类装配对象的属性
    
  3. 属性配置类

    @ConfigurationProperties(prefix = "spring.jdbc.datasource") 读取配置文件
    
  4. 编写自动配置属性文件

    # Auto Configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=xx.xxx.xx.DataSourceAutoConfiguration
    
  5. 配置连接池信息

五 SpringBoot常用启动器

  • 静态资源目录

    1. classpath:/META/INF/resources/
    2. classpath:/resources/
    3. classpath:/static/
    4. classpath:/public/
  • 自定义拦截器

    1. 编写一个拦截器 实现HandlerInterceptor

    2. 通过实现WebMvcConfigures注册拦截器

      @Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**");}
      
  • SpringBoot整合JPA

    1. 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
      
    2. 配置实体类

      @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其他组件

  1. 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
    
  1. SpringBoot Admin服务端

    • application.yml

      spring:application:name: admin-server
      server: port: 8769
      
    • 启动类:@EnableAdminServer

  2. 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
      
  3. 部署打包

    • maven ->package
    • java -jar springboot_01-SNAPASHOT.jar 运行命令

SpringBoot个人总结相关推荐

  1. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  2. Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

    Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...

  3. SpringBoot部署脚本,拿走即用!

    一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可. # 若使用jenkins等工具 ...

  4. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  5. springboot整合swagger2之最佳实践

    来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成.功能测试功能框架. 一 ...

  6. SpringBoot中实现quartz定时任务

    Quartz整合到SpringBoot(持久化到数据库) 背景 最近完成了一个小的后台管理系统的权限部分,想着要扩充点东西,并且刚好就完成了一个自动疫情填报系统,但是使用的定时任务是静态的,非常不利于 ...

  7. Springboot 利用AOP编程实现切面日志

    前言 踏入Springboot这个坑,你就别想再跳出来.这个自动配置确实是非常地舒服,帮助我们减少了很多的工作.使得编写业务代码的时间占比相对更大.那么这里就讲一下面向切面的日志收集.笔者使用lomb ...

  8. 【Springboot】日志

    springBoot日志 1.目前市面上的日志框架: 日志门面 (日志的抽象层):                JCL(Jakarta Commons Logging)                ...

  9. 【springboot】配置

    配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: •application.properties •application.yml 配置文件的作用:修改SpringBoot自 ...

  10. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

最新文章

  1. java连接mongodb_java连接mongodb源码解读
  2. SpringBoot 序列化与反序列化日期类型参数
  3. 绘制Nine-Patch图片
  4. 机器学习和数据科学领域必读的10本免费书籍
  5. 风控人最容易被误解的一个风险管理板块
  6. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
  7. Android NDK学习记录(一)
  8. Unity3D shader简介
  9. 哲学与科学的批判性思维工具
  10. 如何解压 GZ 文件
  11. 大创笔记——硬切法实现基于单片机的人机交互系统
  12. 【CSS 书写模式 (Writing modes )】
  13. win7工作组看不到“其他电脑”的解决方法
  14. 使用poi操作word
  15. 海思3516DV300系列HiPQTools工具ISP图像调试_AWB校定
  16. Battery_MSCCC:基于MATLAB/Simulink的具有多级(5级)恒流控制的电池充放电仿真模型
  17. 如何在 SAP ABAP 系统中使用 Adobe Form
  18. kafka动态权限认证(SASL SCRAM + ACL)
  19. 获取蓝奏网盘无密码下载链接分析思路
  20. 视频营销终极指南,独立站卖家必看

热门文章

  1. IDEA JetBrains 推出 Mono 编程字体真牛逼,更适合程序开发人员!
  2. 2022年西式面点师(初级)复审考试及西式面点师(初级)证考试
  3. 我国支付工具主要有哪几种
  4. 需求基线的划定与管理
  5. hp电脑 linux 出错,HP笔记本AMT报错修复
  6. CocoaChina 允许iOS开发者相互推广自己的作品,发码大师相当不错!
  7. 如何下载百度指数数据到Excel
  8. 安卓12解除进程限制的第一种方式:VMOS助手
  9. excel中的FV函数、PMT函数与PV函数的java实现
  10. 数据存储与备份管理解决方案