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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • excel 日期格式 mysql_EXCEL与MySQL日期格式转换[通俗易懂]

    excel 日期格式 mysql_EXCEL与MySQL日期格式转换[通俗易懂]在MySqL数据库中,日期字段的存储类型为整型字段,存储的是1900年1月1日至当前的秒数。如果你在EXCEL中使用从MYSQL中导出的数据,或者使用ODBC直接访问MySQL数据库,就需要使用下面的转换公式。””在MySqL数据库中,日期字段的存储类型为整型字段,存储的是1900年1月1日至当前的秒数。如果你在EXCEL中使用从MYSQL中导出的数据,或者使用ODBC直接访问MySQL数据库,…

    2022年6月22日
    109
  • 数据结构Elemtype「建议收藏」

    数据结构Elemtype「建议收藏」在C语言数据结构中,关于数据元素的类型定义均用“ElemTypee;”来表示,其中e是表示数据元素的变量,而ElemType则是它的类型,ElemType的含义就是“数据元素的类型”,是一个抽象的概念,是表示我们所要使用的数据元素应有的类型。ElemType是数据结构上为了说明问题而用的一个词。它是elementtype(“元素的类型”)的简化体。因为数据结构是讨论抽象的数据结构…

    2022年5月19日
    60
  • RPM安装命令总结[通俗易懂]

    RPM安装命令总结[通俗易懂]在Linux操作系统下,几乎所有的软件均通过RPM进行安装、卸载及管理等操作。RPM的全称为RedhatPackageManager,是由Redhat公司提出的,用于管理Linux下软件包的软件。Linux安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM完成安装。RPM有五种操作模式,分别为:安装、卸载、升级、查询和验证。1)用RPM安装软件包,最简单的

    2022年6月12日
    32
  • centos7.6安装oracle11g_centos7安装oracle11g

    centos7.6安装oracle11g_centos7安装oracle11g一Oracle安装前的准备1.1oracle11g下载地址:OracleDatabase11gRelease2(11.2.0.1.0)  Enterprise/StandardEditionforLinux(32-bit)http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_data

    2022年9月21日
    4
  • 命令行连接mongodb_yum安装mongodb

    命令行连接mongodb_yum安装mongodb情况:1.使用xmanage能远程链接centos

    2022年8月21日
    6
  • 小程序直播开发文档_小程序直播平台

    小程序直播开发文档_小程序直播平台参考文档:https://www.cnblogs.com/pass245939319/p/9001137.html今天研究了新东西小程序的直播开发这个东西我研究了整整一下午快给我整哭了我的demo地址:https://github.com/AloneYan/WeChat-live.git下面进入正题首先你必须搞一个小程序公众平台的账号注册一个自己的小程序获得自己的…

    2022年9月26日
    3

发表回复

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

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