前言

本博客仅为记录与总结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)修改默认参数;

最后

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

SpringBoot | 1.1 SpringBoot简介的更多相关文章

  1. SpringBoot基础系列-SpringBoot配置

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...

  2. SpringBoot:4.SpringBoot整合Mybatis实现数据库访问

    在公司项目开发中,使用Mybatis居多.在 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问 中,这种jpa风格的把sql语句和java代码放到一起,总 ...

  3. springboot(一).初识springboot以及基本项目搭建

    初识springboot 以及基本项目搭建 由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试spring ...

  4. SpringBoot(19)---SpringBoot整合Apollo

    SpringBoot(19)---SpringBoot整合Apollo 有关Apollo之前已经写了两篇文章: 1.[Apollo](1)--- Apollo入门介绍篇 2.[Apollo](2)-- ...

  5. 【SpringBoot】SpringBoot配置文件及YAML简介(三)

    SpringBoot配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改Spr ...

  6. 【快学springboot】2.Restful简介,SpringBoot构建Restful接口

    Restful简介 Restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现 ...

  7. 尚硅谷springboot学习20-web开发简介

    使用SpringBoot 1).创建SpringBoot应用,添加我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自己编写业 ...

  8. Springboot笔记01——Springboot简介

    一.什么是微服务 在了解Springboot之前,首先我们需要了解一下什么是微服务. 微服务是一种架构风格(服务微化),是martin fowler在2014年提出来的.微服务简单地说就是:一个应用应 ...

  9. springboot+mybatis+shiro——shiro简介

    转载:[一]shiro入门 之 Shiro简介 一.shiro介绍: 官方网址:http://shiro.apache.org/introduction.html,shiro的功能包括:认证.授权.加 ...

随机推荐

  1. mysql基础之查询缓存、存储引擎

    一.查询缓存 "查询缓存",就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果. 如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经 ...

  2. python3+unittest参考

    Python3+Selenium+unittest自动化UI测试框架:https://www.cnblogs.com/G2Bent/p/8376001.html unittest --- 单元测试框架 ...

  3. 03-用三种方法设置CentOS7使用代理服务器上网

    一.永久设置 编辑配置文件 vi /etc/profile 在文件后添加以下内容: export http_proxy='http://代理服务器IP:端口号' export https_proxy= ...

  4. 创建一个本地Yum 仓库,提升速度,减少带宽

    1 mkdir /YUM 2 mount -t iso9660 -o loop /home/dan/Centos-7-x86_x64-DVD.iso /mnt/iso/ 3 rpm -ivh delt ...

  5. android设置时钟

    <TextClock        android:id="@+id/timeText"        android:layout_width="match_pa ...

  6. Linux(CentOS7)下Nginx安装

    记录一下 Linux(CentOS7) 下 Nginx 安装过程 一.准备工作 版本说明: Linux版本:CentOS 7 64位 Nginx版本:nginx-1.20.0 1. 下载安装文件 采用 ...

  7. javascript获取日期,年月,日

    <SCRIPT LANGUAGE="JavaScript"> var myDate = new Date();     myDate.getYear();       ...

  8. 永远的Ace 团队作业4—团队项目需求建模与系统设计(1)

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...

  9. maven把依赖打进jar包

    1.把依赖打进sigma-api的jar包 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  10. 谁才是智能家居的未来?视声M+O融合方案给出答案

    有些智能家居,你不能说它不智能. 但在现实生活中,常常帅不过一秒. 就比如,当你经历了一天的疲惫后回到家,发现玄关的智能开关突然没反应,家里的灯怎么都打不开.这种时候你得明白,你的智能开关面板很有可能 ...