前言

本博客仅为记录与总结SpringBoot的学习笔记,资料来源:

  1. 书籍《深入浅出SpringBoot》第三版
  2. B站尚硅谷《雷丰阳2021版SpringBoot2零基础入门》
  3. SpringBoot中文参考文档
  4. SpringBoot官方文档

1. SpringBoot是什么?

SpringBoot是一个Java后端框架,一种全新的编程规范,它的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。

2. 为什么是SpringBoot?

笔者认为SpringBoot的出现与发展符合时代需求,主要基于以下几点原因:



其一是为简化开发:

在当前互联网后端开发中,JavaEE占据主要地位。对于JavaEE开发,首选Spring框架。在传统Spring开发中,需要大量XML配置才能运行。直到Spring 4.x的发布,Spring才能完全脱离XML使用纯注解开发。为了进一步简化开发,2014年SpringBoot 1.0诞生。随着2017年9月Spring 5.x的推出,2018年SpringBoot 2.x推出,至今为2.5.1。

其二是为适应微服务开发:

微服务这一概念是最近几年才兴起的。随着互联网业务量的指数级扩大,传统开发无法满足快速扩容、处理高并发请求等要求。

而微服务为我们解决了快速响应与弹性伸缩的问题。微服务本质上是将一个大的系统拆分为多个子系统,然后通过REST风格的请求将他们集成,进一步简化分布式系统开发。

3. 约定大于配置

SpringBoot的核心概念是:约定大于配置

能理解这句话就学会一大半了。这里笔者谈谈自己的理解:

我们知道SpringBoot是从Spring发展而来的,而开发一个Spring应用需要大量配置,这些配置多种多样。而SpringBoot要做的事就是针对不同场景提供一个或多个starter(自启动依赖),我们引入这个starter就能使用SpringBoot默认的约定,加上属性文件,做大量自定义配置,简化开发。

以下涉及源码分析,需要一定基础,后续文章会结合案例分析。

从具体流程上看:导入starter场景启动器后,根据SpringBoot的默认规定,首先找到META-INF包下的spring.factories工厂,通过读取EnableAutoConfiguration(自动启动配置,下称自启动)属性的值获取启动时加载的类 :XXXAutoConfiguration(XXX自动配置类)。在自动配置类里,利用@Bean注解把场景下相关组件注册进容器中。

@Bean在这里起到重要作用:

  • 用Spring的话说就是将对象的创建交给Bean factory(bean工厂),即控制反转IOC;
  • 用Java的话就是利用Java的class类(反射机制),使对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它)

这些组件的核心配置项会通过@EnableConfigurationProperties注解跟XXXProperties配置文件绑定。

由此我们可以获得配置类XXXAutoConfiguration配置项XXXProperties信息,其中:

  • 配置类XXXAutoConfiguration里配置了核心组件;
  • 配置项XXXProperties里包含需要修改的配置属性与默认参数;

配置项XXXProperties里主要包含两个信息:

  • 其一是通过@ConfigurationProperties注解可以获取配置文件的前缀prefix=Constants.XXX;
  • 其二是配置项可修改的参数(YYY)名称及参数(ZZZ)。我们在yml里通过[前缀.参数名称=参数](XXX.YYY=ZZZ)修改默认参数;

最后

新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

最新文章

  1. Jquery中的(function($){...})(jQuery)
  2. 【HDU】1848 Fibonacci again and again
  3. JS浏览器全屏
  4. firefox与chrome中对select下拉框中的option支持问题
  5. S1:函数上下文
  6. 开发EXTMVC框架前需要了解的基础知识整理
  7. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
  8. POJ 1066 Treasure Hunt(线段相交判断)
  9. hdu2175汉诺塔IX
  10. Mvc动态注册HttpModule详解
  11. Eclipse背景颜色改动
  12. Linux计划任务crontab
  13. arcgis地图服务之 identify 服务
  14. 《JavaScript高级程序设计》笔记:函数表达式(七)
  15. jQuery mouse and lunbo
  16. Wireshark技巧-过滤规则和显示规则【转】
  17. DoNetZip类库解压和压缩文件
  18. select()函数 的学习
  19. 笔记:BroadcastReceiver的运行过程
  20. tcpdump使用方法

热门文章

  1. Ansible_创建角色_role
  2. 云计算OpenStack---虚拟机获取不到ip(12)
  3. DOS 命令大全用法详解
  4. LT4020替代方案
  5. STM32 串口接收大量数据导致死机
  6. Step By Step(Lua数据结构)
  7. CUDA 11功能清单
  8. 使用JS获取两个时间差(JS写一个倒计时功能)
  9. 错误档案1:Eclipse自动生成swing窗体代码报错
  10. SpringBoot基础系列之自定义配置源使用姿势实例演示