前言
本博客仅为记录与总结SpringBoot的学习笔记,资料来源:
- 书籍《深入浅出SpringBoot》第三版
- B站尚硅谷《雷丰阳2021版SpringBoot2零基础入门》
- SpringBoot中文参考文档
- 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)修改默认参数;
网友评论