【Java八股文总结】之SpringBoot

news2024/11/28 11:01:38

文章目录

  • SpringBoot
      • 1、Spring Boot的优点?
      • 2、Spring Boot自动配置原理
      • 3、如何定义一个SpringBoot Starter?
      • 4、SpringBoot启动原理?
      • 5、SpringBoot的常用注解
  • Spring Cache
      • 1、Spring Cache介绍
      • 2、Spring Cache注解
  • Sharding-JDBC

SpringBoot

1、Spring Boot的优点?

Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
Spring Boot以 约定大于配置 核心思想开展工作,相比 Spring 具有如下优势:

  • Spring Boot 可以快速创建独立的 Spring 应用程序。
  • Spring Boot 内嵌了如 Tomcat,Jetty 和 Undertow 这样的容器,也就是说可以直接跑起来,用不着再做部署工作了。
  • Spring Boot 无需再像 Spring 一样使用一堆繁琐的 xml 文件配置。
  • Spring Boot 可以 自动配置(核心)Spring。SpringBoot 将原有的 XML 配置改为 Java 配置,将 bean 注入改为使用注解注入的方式(@Autowire),并将多个 xml、properties 配置浓缩在一个 appliaction.yml 配置文件中。
  • Spring Boot 提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能。
  • Spring Boot 可以快速整合常用依赖(开发库,例如 spring-webmvc、jackson-json、validation-api 和 tomcat 等),提供的 POM 可以简化 Maven 的配置。当我们引入核心依赖时,SpringBoot 会自己引入其他依赖。

2、Spring Boot自动配置原理

SpringBoot 开启自动配置的注解是 @EnableAutoConfiguration,启动类上的注解 @SpringBootApplication 是一个复合注解,包含了@EnableAutoConfiguration:
在这里插入图片描述

  • EnableAutoConfiguration 只是一个简单的注解,自动装配核心功能的实现实际是通过 AutoConfigurationImportSelector类。
    在这里插入图片描述
  • AutoConfigurationImportSelector实现了ImportSelector接口,这个接口的作用就是收集需要导入的配置类,配合 @Import() 就可以将相应的类导入到 Spring 容器中。
  • 获取注入类的方法是selectImports(),它实际调用的是getAutoConfigurationEntry,这个方法是获取自动装配类的关键,主要流程可以分为这么几步:
    1. 获取注解的属性,用于后面的排除。
    2. 获取所有需要自动装配的配置类的路径: 这一步是最关键的,从 META-INF/spring.factories 获取自动配置类的路径。
    3. 去掉重复的配置类和需要排除的重复类,把需要自动加载的配置类的路径 存储起来。

3、如何定义一个SpringBoot Starter?

① 创建一个项目,命名为 demo-spring-boot-starter,引入 SpringBoot 相关依赖
在这里插入图片描述

② 编写配置文件(定义属性配置的前缀)
在这里插入图片描述
③ 自动装配:创建自动配置类HelloPropertiesConfigure。
在这里插入图片描述
④ 配置自动类:在/resources/META-INF/spring.factories文件中添加自动配置类路径。
在这里插入图片描述
⑤ 测试。

4、SpringBoot启动原理?

SpringApplication 这个类主要做了以下4件事情:

  1. 推断应用的类型是普通的项目还是 Web 项目(判断项目类型)。
  2. 查找并加载所有可用初始化器,设置到 initializers 属性中。
  3. 找出所有的应用程序监听器,设置到 listeners 属性中。
  4. 推断并设置 main 方法的定义类,找到运行的主类。
    SpringBoot 启动大致流程如下:
    在这里插入图片描述

5、SpringBoot的常用注解

在这里插入图片描述

Spring Cache

1、Spring Cache介绍

Spring Cache是一个框架,实现了 基于注解的缓存功能,实现时需要实现CacheManager接口。CacheManager是Spring提供的各种缓存技术抽象接口。针对不同的缓存技术需要实现不同的CacheManager:
在这里插入图片描述

2、Spring Cache注解

在这里插入图片描述
在Spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用 @EnableCaching开启缓存支持 即可。
例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

Sharding-JDBC

Sharding-JDBC定位为 轻量级Java框架 ,在Java的JDBC层提供额外的服务。它 使用客户端直连数据库 ,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。在程序中用来 实现数据库读写分离

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于vector的迭代器失效

目录 关于迭代器失效的判定 1 迭代器指向的位置是野指针(全部迭代器失效) 原因: 解决 2 erase或者insert之后迭代器被更改了(部分迭代器失效) 原因 迭代器失效的场景: 改进之后 部分迭代器失效之越…

十年前的AlexNet,今天的NeurIPS 2022时间检验奖

目录:十年前的AlexNet,今天的NeurIPS 2022时间检验奖一、前言二、时间检验奖一、前言 作为当前全球最负盛名的 AI 学术会议之一,NeurIPS 是每年学界的重要事件,通常在每年 12 月举办。大会讨论的内容包含深度学习、计算机视觉、大…

三款“非主流”日志查询分析产品初探

前言 近些年在开源领域,用于构建日志系统的软件有两类典型: Elasticsearch:基于 Lucene 构建倒排索引提供搜索功能,DocValue 存储支持了其统计分析能力。Clickhouse:列式存储是其优秀 OLAP 性能的保障。 这里把上述系…

Windows安装MySQL

目录 1、确认本地是否安装了mysql 2、下载安装包 3、安装mysql 4、修改mysql密码 5、配置环境变量 1、确认本地是否安装了mysql (1)按【winr】快捷键打开运行,输入services.msc,点击【确定】; (2&…

大数据开发和软件开发哪个前景好?

大数据开发和软件开发哪个前景好?大数据开发学习有难度,零基础入门要先学习Java语言打基础,然后进入大数据技术体系的学习,学习Hadoop、Spark、Storm等知识。软件开发工程师根据不同的学科从事的岗位也千差万别。 先说说大数据开…

关于激光雷达传感器分类及简介

关于激光雷达传感器(根据特性进行分类介绍)0一些激光雷达的厂商总结1 基本介绍2 基本分类及组成2.1 激光雷达的相关分类2.1.1 机械式激光雷达:2.1.2 混合固态激光雷达:2.1.3 固态激光雷达:OPA和Flash固态激光雷达2.2 机…

Linux shell 脚本学习

目录 1.shell编程的基本格式 开头 注释 加可执行权限 执行脚本的三种方法 2.变量 定义变量和清除变量 从键盘获取值(read) 读取多个值 只读变量(readonly) 位置变量 变量运算 3.条件测试 文件测试 字符串测试 数值测试 逻辑操作符 4. if条件语句 if条件语句语法 单…

SPARKSQL3.0-源码剖析全流程导读

SPARKSQL-源码剖析全流程导读 一、处理流程 spark从一条sql语句一步一步转换成物理执行结果,这中间需要经历几个阶段,如下图: 二、各阶段概述 1、Unresolved-未解析阶段 此阶段主要做了两件事: 1、将sql字符串通过antrl4转化…

元数据管理系统

数据治理工具–元数据系统数据服务基础能力之元数据管理元数据管理系统设计 1.元数据概述 1.1 介绍 如果想建设好元数据系统,需要理解元数据系统的相关概念,如数据、数据模型、元数据、元模型、ETL、数据血缘等等。 首先,要清楚数据的定义…

python_函数

一、函数介绍组织好的,可重复使用的,用来实现特定功能的代码段例如:len() 函数--Python内置函数# 已组织好的、可重复使用,针对特定功能 def my_len(data):count 0for i in data:count 1print(f"字符串{data}的长度是{coun…

WebRTC实现一个网页在线录制视频

电脑录制视频几乎不会用到,当有需要的时候就各种找软件找工具,并且都会找免费的。现在市场上肯定有很多符合需求,只是那么偶尔的情况下,而且使用场景不是那么多要求的情况下,一个网页在线直接录屏是不是非常nice。 很…

40Java Runtime类

目录 Runtime类 1.概述 2.常见方法 (1).getRuntime返回环境对象 (2).exit停止虚拟机 (3).availableProcessors返回线程数 (4). maxMemory返回获得最大内存 (5).totalMemory返回已经获得内存 (6).freeMemory返回剩余内存 (7).exec运行cmd命令 Runtime类 1.概述 ​ Run…

双亲委派模型机制

文章目录类加载器findClassloadClassJDK双亲委派的破坏第一次破坏第二次破坏tomcat热部署JDK9最新改动双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该…

卷积神经网络<二>keras实现多分支输入VGG

VGG的模型图 VGG使用Keras实现 这里的代码借鉴了VGG实现Keras,但是这段代码不支持多通道,并且vgg函数的扩展性不好。下面修改一下,方便进行多分支图片输入的建立,以及更见方便的调参。 # from keras.models import from keras.l…

MyBatis介绍

MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordi…

PMP考试自学可以吗?(含PMP备考资料)

当然是可以的,只要解决了“报考的35学时”这个问题,就只剩怎么备考的问题了。 在一般情况下,建议备考一到三个月,别给自己太长或太短的备考时间,前者坚持不下来,后者备考时间太少,来不及备考充…

戴尔大步进军经典量子计算混合模型

​ (图片来源:网络) 戴尔正将量子计算机融入传统IT的基础架构中,并向新型加速计算机开放了数据中心。这家服务器制造商为传统服务器基础设施创建了一个蓝图,以满足量子系统的独特需求,量子系统速度要比经典…

基于物联网的汽车爆胎预警系统

本设计是基于物联网的汽车爆胎预警系统的设计与实现设计,主要实现以下功能: 1,主机用LCD1602显示温度、气压和距离; 2,主从机间通过ZigBee进行数据的传输; 3,从机检测轮胎气压,温度…

zbxtable

ubuntu install zbxtable 1.新建zbxtable文件夹,将三件套下载到本地存放 mkdir ~/zbxtable ZbxTable: https://dl.cactifans.com/zbxtable/zbxtable-2.1.0.tar.gz ZbxTable-Web: https://dl.cactifans.com/zbxtable/web.tar.gz MS-Agent: https://dl.cactifans.co…

MybatisMybatisPlusSpringboot之最全入门学习教程笔记

1 Mybatis概述 1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发, (1)持久层:负责将数据到保存到数据库的那一层代码。Mybatis就是对jdbc代码进行了封装。 JavaEE三层架构:表现层、业务层、持久层…