SpringBoot | 1.1 SpringBoot简介

简介: 本博客仅为记录与总结SpringBoot的学习笔记,资料来源:1. 书籍《深入浅出SpringBoot》第三版 2. B站尚硅谷《雷丰阳2021版SpringBoot2零基础入门》 3. [SpringBoot中文参考文档](https://www.apiref.com/spring-boot-zh/#boot-documentation-first-steps) 4. [SpringBoot官方文档](https://docs.spring.io/spring-boot/docs/current/reference/html/)

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)修改默认参数;
相关文章
|
Java Maven
SpringBoot - 简介
SpringBoot - 简介
109 0
SpringBoot - 简介
|
XML 开发框架 安全
SpringBoot简介
SpringBoot简介
|
NoSQL Java 数据库连接
Idea创建SpringBoot多模块项目
我们可以定义一个维度,以此来划分模块,例如上述商城、可以划分成商品、库存和订单模块。也可以目录结构分层,`Controller`层,只不过没人这样做。这样就引申出了下一个问题`拆分策略`。
932 0
Idea创建SpringBoot多模块项目
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
500 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
155 0
创建springboot项目的基本流程——以宠物类别为例
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
SpringBoot 项目与被开发快速迁移|学习笔记
|
Java Spring
自定义SpringBoot项目的启动Banner
``Banner``是``SpringBoot``框架一个特色的部分,其设计的目的无非就是一个框架的标识,其中包含了版本号、框架名称等内容,既然``SpringBoot``为我们提供了这个模块,它肯定也是可以更换的这也是``Spring``开源框架的设计理念。
|
前端开发 Java 应用服务中间件
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
262 0
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
|
Java Spring
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
282 0
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
|
消息中间件 NoSQL Java
47K Star 的SpringBoot+MyBatis+docker电商项目,附超详细的文档
该项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统:首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统:商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 该项目使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、