SpringBoot | 1.1 SpringBoot简介
前言
本博客仅为记录与总结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)修改默认参数;
最后
新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

SpringBoot | 1.1 SpringBoot简介的更多相关文章
- SpringBoot基础系列-SpringBoot配置
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...
- SpringBoot:4.SpringBoot整合Mybatis实现数据库访问
在公司项目开发中,使用Mybatis居多.在 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问 中,这种jpa风格的把sql语句和java代码放到一起,总 ...
- springboot(一).初识springboot以及基本项目搭建
初识springboot 以及基本项目搭建 由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试spring ...
- SpringBoot(19)---SpringBoot整合Apollo
SpringBoot(19)---SpringBoot整合Apollo 有关Apollo之前已经写了两篇文章: 1.[Apollo](1)--- Apollo入门介绍篇 2.[Apollo](2)-- ...
- 【SpringBoot】SpringBoot配置文件及YAML简介(三)
SpringBoot配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改Spr ...
- 【快学springboot】2.Restful简介,SpringBoot构建Restful接口
Restful简介 Restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现 ...
- 尚硅谷springboot学习20-web开发简介
使用SpringBoot 1).创建SpringBoot应用,添加我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自己编写业 ...
- Springboot笔记01——Springboot简介
一.什么是微服务 在了解Springboot之前,首先我们需要了解一下什么是微服务. 微服务是一种架构风格(服务微化),是martin fowler在2014年提出来的.微服务简单地说就是:一个应用应 ...
- springboot+mybatis+shiro——shiro简介
转载:[一]shiro入门 之 Shiro简介 一.shiro介绍: 官方网址:http://shiro.apache.org/introduction.html,shiro的功能包括:认证.授权.加 ...
随机推荐
- 040.Python进程和Join
一 进程相关介绍 1.1 进程的概念(process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位 资源分配:分配的是cpu和内存等物理资源 进程号是程的唯标识 同-个程序执行两次之 ...
- spring mvc下实现通过邮箱找回密码功能
1功能分析 通过spring mvc框架实现通过邮箱找回密码. 2 实现分析 主要是借助某个邮箱的pop3/smtp服务实现的邮件代发功能. 3 源码分析 3.1首先在用户表对应的javabean中加 ...
- 并发王者课-青铜5:一探究竟-如何从synchronized理解Java对象头中的锁
在前面的文章<青铜4:synchronized用法初体验>中,我们已经提到锁的概念,并指出synchronized是锁机制的一种实现.可是,这么说未免太过抽象,你可能无法直观地理解锁究竟是 ...
- Docker Registry 简化版
目录 Docker Registry 为什么要使用Registry 依赖 启动 Configuring a registry 配置认证 Docker Registry https://docs.doc ...
- Linux(CentOS7)下二进制安装MySQL5.7.26
记录一下自己在 CentOS7 下二进制安装 MySQL5.7.26 的过程,之前使用 Linux(CentOS7)下rpm安装MySQL8.0.16 之后发现 rpm 方式安装不利于维护,也不利于单 ...
- gasshopper之python电池输出dict结构
问题:gh 直接用 panel 是无法直接输出字典结构的 故需要用 zip() 函数将字典的keys() values() 组成一个元组,可以直接输出: 实例: dict = {} for i in ...
- Torchvision模型微调
Torchvision模型微调 本文将深入探讨如何对 torchvision 模型进行微调和特征提取,所有这些模型都已经预先在1000类的magenet数据集上训练完成.将深入介绍如何使用几个现代的C ...
- Tesla T4视频编码性能分析
Tesla T4视频编码性能分析 从开普勒开始的所有 NVIDIA GPUs 都支持完全加速的硬件视频编码: GPUs 支持完全加速的硬件视频解码.最近发布的图灵硬件提供了张量核心和更好的机器学习性能 ...
- 编译器设计-RunTime运行时环境
编译器设计-RunTime运行时环境 Compiler Design - Run-Time Environment 作为源代码的程序仅仅是文本(代码.语句等)的集合,要使其活动,它需要在目标计算机上执 ...
- 黎曼曲面Riemann Surface
黎曼曲面Riemann Surface A Riemann surface is a surface-like configuration that covers the complex plane ...