本文是鄙人早期学习的记录,存在部分不足的问题,可以私信或留言讨论,文档将一步步翻修

SpringBoot学习笔记

文章写得比较详细,所以很长(105336 字数),可以参考目录

文章目录

  • SpringBoot学习笔记
    • @[toc]
  • 一、 Spring Boot 入门
    • 预:必须掌握的技术:
    • 1. Spring Boot 简介
      • 学前bb
      • 解决的问题
      • 优点
      • 缺点
    • 2.微服务
      • What are Microservices?
        • 单体应用
        • 微服务
    • 3.环境准备
      • Maven设置:
      • Idea设置
    • 4.Spring Boot HelloWorld
      • 4.1创建一个maven项目
      • 4.2 创建项目结构以及启动类
    • 5.Hello World 的探究
      • 1)pom文件
        • a.父项目
        • b.导入的依赖
      • 2)主程序类,主入口类
    • 6.使用Spring Initializer快速创建Spring Boot 项目
      • SpringBoot学习第一步:搭建基础
      • 流程如下
      • 默认生成的Spring Boot 项目:
  • 二、Spring Boot 配置
    • 1. 配置文件
    • 2. YAML语法
      • 1)基本语法
      • 2)值的写法
        • 字面量:普通的值(数字,字符串,布尔)
        • 对象、Map(属性和值)(键值对)
        • 数组(List、Set):
    • 附:Spring Boot单元测试
    • 3. 通过配置文件注入
      • 1) 数据绑定到基础数据类型
      • 2) 将数据绑定到类中 含配置文件与类绑定的方法
      • 3) @Value 获取值和 @ConfigurationProperties获取值的比较
      • 4) 配置文件注入值数据校验
      • 5) @PropertySource & @ImportResource
      • 4)Spring配置文件注入
        • a. @**ImportResource**: 导入Spring配置文件,让配置文件里面的内容生效;
        • b. Spring Boot 推荐给容器添加组件的方式
    • 4.配置文件占位符
      • RandomValuePropertySource: 配置文件中可以使用随机数
      • 属性配置占位符
    • 5.Profile
      • 1)多Profile文件
      • 2)yml支持多文档块方式
      • 3)激活指定Profile
    • 6.配置文件的加载位置
    • 7.Spring Boot 外部配置加载顺序
    • 8.Spring Boot 自动配置原理
      • 配置文件能写些什么?怎么写?自动配置的原理?
      • 自动配置原理:
      • 精髓
    • 3.自动配置原理(细节)
      • 1)@Conditional派生注解(Spring注解版原生的@Conditional作用)
  • 三、Spring Boot 与日志
    • 1、日志框架
    • 2、SLF4j使用
      • 1)如何在系统中使用SLF4j
      • 2)遗留问题
      • 3)SpringBoot日志关系
    • 3.日志使用
      • 1)默认配置
      • 2)指定配置
      • 3)切换日志框架
  • 四、SpringBoot与Web开发
    • 1、使用SpringBoot
    • 2、SpringBoot对静态页面的映射规则
      • 访问静态资源
        • 第一种 导入的webjars
        • 第二种"/**"访问当前项目的任何资源
      • 欢迎页配置
      • 图标
      • 3、模板引擎
        • 引入thymeleaf
        • Thymeleaf使用&语法
        • 语法规则
          • 1)、th:text 改变当前元素里面的内容
          • 2)表达式
            • Variable Expressions: ${...} 获取变量值,OGNL;
            • Message Expressions: #{...} 获取国际化内容
            • Link URL Expressions: @{...} 定义URL链接
            • Fragment Expressions: ~{...} 插入文档
            • Literals(字面量)
            • Text operations: (文本操作)
            • Arithmetic operations: (数学运算)
            • Boolean operations: (布尔运算)
            • Comparisons and equality:(比较运算)
            • Conditional operators:(条件运算)(三元运算符也支持)
            • Special tokens:(特殊)
    • 4、SpringMVC自动配置
        • 7.1.1. Spring MVC Auto-configuration
      • 扩展SpringMVC
      • 全面接管SpringMVC
    • 5、如何修改SpringBoot的默认配置
    • 6、RestfulCRUD
      • 1)、设置默认访问首页
      • 2)、国际化
        • SprigMVC的情况
        • SpringBoot模式
        • 原理
      • 3)、登录
        • 若登录失败,需要提升失败信息
        • 使用MVC视图解析跳转会出现刷新重新提交表单的情况,为防止这种情况发生,我们可以使用重定向
      • 4)、拦截器进行登录检查
        • 为了防止他人随机访问后台管理页面,可以利用拦截器机制,做登录检查
      • 5)、CRUD-员工列表
    • 7、错误处理机制
      • 1)、SpringBoot默认的错误处理机制
  • 五、配置嵌入式Servlet容器
    • 嵌入式Servlet容器配置
    • 注册Servlet容器三大组件
    • 使用其他Servlet容器
    • 嵌入式Servlet容器自动配置原理
      • Spring Boot 如何自动配置servlet容器
      • 我们对嵌入式容器配置的修改如何生效
      • 嵌入式Servlet容器启动原理
    • 使用外置的Servlet容器
      • 外置的Servlet容器:外面安装Tomcat——应用war包的方式打包
  • 六、数据访问
    • 1、jdbc配置
      • 配置properties
      • 效果:
      • 自动配置原理:
    • 2.使用druid
      • Druid的简介
        • 同时Druid不仅仅是一个数据库连接池,它包括四个部分:
        • Druid的功能
        • 所以Druid可以:
      • 配置Druid
        • 引入stater
        • 在配置文件进行配置
    • 3、整合Jpa
    • 4、整合MyBatis
      • MyBatis原理
        • 一、Mybatis工作原理图
        • 二、工作原理解析
        • mybatis层次图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200228231938758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ5NDM3Mw==,size_16,color_FFFFFF,t_70)
      • 配置
        • 引入依赖
        • 在启动类上注解——增加MapperScan注解路径执行mapper接口路径
        • 配置文件进行配置
      • 注解模式进行开发
  • 七、创建SpringBootApplication
  • 八、缓存
    • 1、统一的缓存开发规范:J2EE——JSR107
      • 2、配置
    • 2、Spring缓存抽象
      • 重要概念&缓存注解
      • 配置环境
      • @Cacheable属性配置
        • cacheNames/value
        • key
          • SpEL表达式
        • keyGenerator
        • cacheManager
        • condition
        • unless
        • sync
      • @CachePut
        • @CacheEvict
        • key、keyGenerator与以上两个相同
        • condition
        • allEntries
        • beforeInvocation
      • @Caching
      • @CacheConfig
      • 原理
        • 运行流程
    • 3、整合redis缓存
      • 整合
      • Redis使用自制序列化器
  • 九、Spring Boot 与消息
    • 1、消息队列是什么以及why消息队列
      • 1、异步:
        • why异步,而不是线程池?
      • 2、解耦:
        • 用了**消息队列**,耦合这个问题就迎刃而解。
        • 那你的流程走完了,你不用管别人是否成功么?比如你下单了积分没加,优惠券没扣怎么办?
      • 3、削峰:
        • 解决高压访问
      • 使用了消息队列的问题?
        • 系统复杂性
        • 数据一致性
        • 可用性
      • 技术选型(选择中间件)?
    • 2、重要概念
      • 1、两个重要概念
      • 2、消息队列的两种模式
        • 3.1 点对点模式
        • 3.2 发布/订阅模式
    • 3、RabbitMQ
      • a.简介
      • b.核心概念
        • Message
        • Publisher
        • Exchange
        • Queue
        • Binding
        • Connection、
        • Channel
        • Consumer
        • Virtual Host
        • Broker
      • c.Exchange类型
        • Direct
        • fanout
        • topic
      • d.RabbitMQ安装测试
    • 4、RabbitMQ整合
      • 先引入依赖(可以勾选idea项目选项快速完成)
      • 自动配置类:
      • 应用RabbitTemplate操作举例
      • 监听场景@RabbitListener @EnableRabbit
      • AmqpAdmin的应用
  • 十、SpringBoot与检索
  • 十一、Spring Boot 与任务
    • 异步任务
      • 使用异步@Async
    • 定时任务
      • 开启定时任务
    • 邮件任务
      • 配置
        • 引入依赖
        • 配置文件
      • 自动配置类
      • 发送邮件
        • 发送一个简单的邮件
        • 发送一个复杂消息邮件
  • 十二、Spring Boor与安全
    • SpringSecurity概述
      • 几个类:
      • 基础概念
    • 开启SpringSecurity
      • 首先引入依赖
      • 编写安全配置类
  • 十三、Spring Boot与分布式
    • 1、分布式概述
      • Dubbo工作图
    • 安装Zookeeper
    • 整合Zookeeper、Dubbo、SpringBoot
      • 1、引入依赖
      • 2、配置dubbo
      • 3、编写服务
      • 4、消费者
    • 四种架构
  • 十四、Docker
    • 基础
    • 安装Docker
    • docker常用指令

一、 Spring Boot 入门

Spring Boot 官方文档

预:必须掌握的技术:

  • Spring 框架的使用经验
  • 熟练使用Maven进行项目构建和依赖管理
  • 熟练使用IDEA或Eclipse

1. Spring Boot 简介

学前bb

大多数人应该知道神奇SSM(Spring+SpringMVC+MyBatis)三兄弟让JavaWeb的开发几乎是进入了新次元,按照官方的要求来编写代码,配置项目,项目就能稳定运行。

而SpringBoot更神奇了,人家就倡导两个字:自动(个人口胡
SSM配置到吐的配置文件,SpringBoot就几行字,就是舒适。

Spring Boot 来简化Spring 应用的开发,约定大于配置,去繁从简,明显提高开发效率

然后Spring Boot发展了一段时间呢,大家觉得这个啊,是真的香,拿来整微服务,岂不是美滋滋
于是你会发现大多数微服务都是Spring Boot为基础,
(甚至Eureka的服务注册中心,就是个Spring Boot项目)

2020/12/10:本篇文章呢,会提到一些自动配置的原理,各位只是看个爽,这里可以选看,如果是为了学习Spring Boot,还是建议仔细品一品的!毕竟Spring Boot就是Spring+Spring MVC的无敌全自动版本,自动配置是核心。

解决的问题

  1. Spring全家桶时代
  2. Spring Boot ——》J2EE一站式解决方案
  3. Spring Cloud -> 分布式整体解决方案(Spring技术栈)

优点

  • 快速创建独立运行的Spring项目以及与主流框架集成
  • 使用嵌入式Servlet容器,应用无需打成WAR包,直接使用Java -jar jar包名即可运行
  • starters自动依赖与版本控制
  • 大量的自动配置,简化开发,也可以修改默认值
  • 无需配置XML,无需代码生成,开箱即用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成

缺点

入门快,精通很难

Spring Boot是对Spring 框架的再封装,若对Spring不了解,对SpringBoot的封装机制也不会很了解,Spring Boot中许多自动配置,需要我们了解Spring的API(只有在了解Spring的API后才能更精通Spring Boot

2.微服务

martin fowler详细介绍了微服务Martin Fowler:microservices

What are Microservices?

微服务是一种架构风格

提倡在开发应用时,一个应用应该是一组小型服务;可以通过HTTP的方式进行互通

单体应用

  1. All In One ,
  2. 是传统的架构,
  3. 优点:开发 、部署、运维要简单,
  4. 缺点:牵一发动全身,不适合大型应用
  5. 在多个服务器上复制这个单体进行扩展

微服务

  1. 一个微服务架构把每个功能元素放进一个独立的服务中
  2. 通过跨域服务器分发这些服务进行扩展,只在需要时进行扩展

    Spring Boot 完整讲解相关推荐

    1. 超全、超详的Spring Boot配置讲解笔记

      超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...

    2. spring boot 完整集成jsp。(亲测可用)

      1.idea在工程源文件夹src/main/下创建web资源文件夹,webapp,并设置为资源文件. 2.application.properties文件设置如下   #jsp 支持 spring.m ...

    3. Spring Boot基础讲解

      Spring Boot Spring Boot 是由Pivotal团队提供的框架,它并不是一个全新的框架,而是将已有的 Spring 组件整合起来,设计目的是用来简化新Spring应用的初始搭建以及开 ...

    4. Spring Boot 大型线上商城项目实战教程

      写给读者 凭借 Spring Boot 本身的优越性及在企业开发应用中的不断推广普及,该领域技术人才在招聘市场深受欢迎.2018 年 Spring Boot 2 正式版的发布,引起社区对该技术的关注度 ...

    5. Spring Boot 属性配置和使用

      spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 系列 Spring Boot 入门 S ...

    6. 如何免安装服务器将 React 整合进 Spring Boot

      如何免安装服务器将 React 整合进 Spring Boot 下载 Spring Boot 官方 demo 下载 React 官方 demo 开始整合 使用 Spring MVC 控制器导向 Rea ...

    7. 微服务架构具体实现工具框架:Spring Boot概览与核心原理

      目录 一.Spring Boot概述 1.回顾使用Spring开发WEB应用程序过程 2.新一代开发框架的诞生Spring Boot 编码方面 配置方面 部署方面 监控方面 3.SpringBoot核 ...

    8. 热烈庆祝《Spring Boot 2.X 实战教程》上线了!

      视频地址:https://edu.csdn.net/course/detail/25550 l 机构名称:大华软件学院  l 授课讲师:大强老师 l 课程名称:Spring Boot 2.X 实战教程 ...

    9. java5分钟项目讲解_5分钟快速创建spring boot项目的完整步骤

      前言 上一篇博客说了如何创建spring boot项目,但是有些同学会觉得有点麻烦,有没有什么快速学会能快速创建spring boot项目的方法,答案是肯定的.接下来我们就一起来快速创建一个sprin ...

    最新文章

    1. 为rm添加一个回收站|将linux下的rm命令改造成mv到指定的目录下
    2. Linux 操作系统原理 — 内存 — Cache 和 Buffer
    3. 2017-11-29 黑盒测试实践(小组作业)小组工作记录
    4. mongodb学习参考博文
    5. djc加密数字货币_中国银行原副行长: quot;网络加密币quot;难以成为货币,央行数字货币只能是法定货币的数字化...
    6. 8086数据寄存器介绍
    7. UML类图中的各种箭头代表的含义(转自:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html)
    8. 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性
    9. java return
    10. 无人机导航定位系统Java_无人机高精度室内定位导航的技术方案
    11. 技术分享连载(六十一)
    12. java+filter加密_Javaweb之Filter案例练习-自动登录问题和MD5加密
    13. java启动servlet_Java Servlet 运行原理分析
    14. JavaScript十六进制、八进制、二进制与十进制互转
    15. onfling滑动界面进行Activity切换
    16. php之使用curl对百度orc进行文字识别(二维码识别同理)--base64编码方式(解决image format error)
    17. 面试官:请手写一个 webpack 4.0 配置
    18. 不定积分 基本积分表
    19. 新旧Oracle客户端连接远程oracle数据库
    20. 项目组织结构的3种类型:职能型、项目型和矩阵型

    热门文章

    1. 【linux】使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
    2. 内部排序算法的稳定性
    3. 综述:CNN在脑肿瘤分类的应用(2015-2022)
    4. 为什么开发人员工作10多年了还会迷茫?
    5. 详细记录->使用Maven+SSM框架,实现单表简单的增删改查
    6. RISC-V V拓展的实验测试
    7. 什么情况下不能弱势?
    8. CF821E(多次矩阵快速幂)
    9. 关于Google不能搜索之解决方案
    10. 迪科斯特拉算法及其优化