Springboot面试题一

Springboot面试题一Springboot面试题一一什么是springboot的stater,能干什么?二Springboot自动装配的原理三SpringBoot有几种读取配置文件的方式?四Springboot全局异常处理一什么是springboot的stater,能干什么?starter是一种服务,使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由SpringBoot自动通过classpath路径下的类发现并加载需要的Bean。背景:在没有使用各个starter之前,我们搭

大家好,又见面了,我是你们的朋友全栈君。

一 什么是spring boot的stater,能干什么?

starter是一种服务,使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现并加载需要的Bean。
在这里插入图片描述
背景:在没有使用各个starter之前,我们搭环境的时候是这样做的
我们以引入jpa的步骤为例:
• 通过maven 引入jdbc的依赖、以及jpa相关的各种依赖
• 编写jpa相关的配置文件
• 网上各种查询找资料进行调试,调试的过程对于新手可能会有点奔溃会遇到各种奇奇怪怪的问题,jar包冲突啊,这个jar包下载不下来,缺少某个jar包。等等问题

使用starter ,我们只需引入 spring-boot-starter-data-jpa

二 Springboot 自动装配的原理

什么是自动装配?
通过全局文件配置application.properties或application.yml,就能实现对程序的配置。

实现自动装配只需要两个条件——maven依赖、配置文件。
1 引入maven实质上就是导入jar包,spring-boot启动的时候会找到starter jar包中的resources/META-INF/spring.factories文件,根据spring.factories文件中的配置,找到需要自动配置的类。
2 配置文件就是application.properties或者application.yml 文件。

那spring boot究竟怎么完成自动配置的呢?
1 @SpringBootApplication注解点进去,查看配置注解
在这里插入图片描述
2:@EnableAutoConfiguration注解点进去
在这里插入图片描述
AutoConfigurationImportSelector这个类getCandidateConfigurations这个方法里面通过SpringFactoriesLoader.loadFactoryNames() (SpringFactoriesLoader是Spring框架中的加载类的核心加载器,专门用来读取classpath下各个jar包里META-INF/spring.factories目录里面的配置。)扫描所有具有META-INF/spring.factories的jar包( spring.factories 我们可以理解成 Spring Boot 自己的 SPI 机制)。
spring-boot-autoconfigure-x.x.x.x.jar里就有一个spring.factories文件。spring.factories文件由一组一组的Key = value的形式,其中一个key是EnableAutoConfiguration类的全类名,而它的value是一个以AutoConfiguration结尾的类名的列表,有redis、mysql等这些类名以逗号分隔。这时Springboot将加载的类全部加载到IOC中。

3 查看IOC 中的配置类 以ServletWebServerFactoryAutoConfiguration配置类为例,看一下配置类的样子
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Springboot 通过注解,找到META-INF/spring.factories文件。并加载文件中所有的配置类。
这个时候,如果我们不在application.yml下配置的话,就用默认值,如果配置了的话,就用application.yml中配置的值。(因为第一步加载到IOC中的类,就是配置类)

三 SpringBoot 有几种读取配置文件的方式?

1 在Contoller 中直接通过@vaule 引入即可
2 自定义配置类,然后注入到controller
在这里插入图片描述
在这里插入图片描述
3 @ConfigurationProperties
当我们的属性比较多的时候,这个时候用@value就会显得代码太冗余了,这个时候,Springboot 为我们提供了 @ConfigurationProperties
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
@PropertySource:加载指定文件夹下的配置文件

四 Spring boot全局异常处理

SpringBoot中有一个ControllerAdvice的注解,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142609.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 下午12:00
下一篇 2022年5月23日 下午12:00


相关推荐

  • java中位运算和移位运算详解[通俗易懂]

    java中位运算和移位运算详解[通俗易懂] 一、位运算(1)按位与&如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0。首先我们看一下对正数的运算  &nbs

    2022年7月4日
    28
  • C语言学生成绩管理系统源代码

    C语言学生成绩管理系统源代码大学C语言实训课,C语言学生成绩管理系统。#include<stdio.h>#include<string.h>#include<math.h>structstudent { intnum; charname[20]; floatpingshi; floatshiyan; floatkaoshi; double…

    2022年5月19日
    209
  • python方法实现字符串反转

    python方法实现字符串反转python 方法实现字符串反转

    2026年3月20日
    2
  • php libpng 不兼容,Python matplotlib和libpng不兼容issu

    php libpng 不兼容,Python matplotlib和libpng不兼容issu我真的受这个问题困扰了这么久 最初 在用 matplotlib 绘制一些东西之后 我可以轻松地保存图像 但是 在安装了 scipy 之后 我再也无法保存我的图像了 我使用 pip 安装了 matplot 和 scipy 我试图查找一些信息 但还是无法解决问题 我的操作系统是 MacOSXLion 10 7 我认为以下链接是一些相关的问题似乎如果我可以重新链接库或设置 DYLD LIBRARY PATH 实际上

    2025年6月15日
    7
  • linux修改用户的组_linux添加用户命令

    linux修改用户的组_linux添加用户命令From:http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html鸟哥官网Linux帐号管理与ACL权限设定:http://linux.vbird.org/linux_basic/0410accountmanager.php鸟哥官网(简体中文):http://cn.linux.vbird.org/linux_ba…

    2022年8月18日
    12
  • EBC外汇交易平台_ecn外汇交易商排名

    EBC外汇交易平台_ecn外汇交易商排名外汇凭借公开透明、交易公平、24小时实时交易、高倍杠杆等独特的优势备受投资者推崇。相比于其他产品,外汇交易更需要做好风险和收益的动态平衡,建议投资者在选择投资平台时,优先选择专业高效的金融券商。EBC金融投资平台凭借其安全与收益的双重保障,受到越来越多投资者的追捧。安全保障:FCA+ASIC双认证通过,搭起坚实投资防护墙EBC金融始终将合规专业、为客户提供最大限度的资金安全保障作为基本要求,积极付出行动。EBC金融自成立初期起,将所有的资金都托管在世界顶级银行,接受监管机构严格、健全的监管体系之严格

    2025年10月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号