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


相关推荐

  • pycharm上传代码到gitlab_pycharm配置git

    pycharm上传代码到gitlab_pycharm配置git让git忽略掉一些文件(.gitignore)#pycharm.idea/.DS_Store__pycache__/*.py[cod]*$py.class#Djangostuff:local_settings.py*.sqlite3#databasemigrations*/migrations/*.py!*/migrations/__init__.pygit管理项目

    2022年8月28日
    4
  • nessus安装使用教程_kali linux全部功能教程

    nessus安装使用教程_kali linux全部功能教程一、Nessus介绍Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus作为扫描该机构电脑系统的软件。提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus专业版非免费的;家庭版是免费的,但单次任务只可以扫16个IP,这里注册的是家庭版,注册成功后会给邮箱发送一个激活码。二、安装下载家庭版https://www…

    2022年10月18日
    9
  • kafka-logs_logstash kafka

    kafka-logs_logstash kafkaKafka的Log存储解析标签(空格分隔):kafka引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partit

    2022年10月14日
    3
  • php开发中处理emoji表情和颜文字的兼容问题

    php开发中处理emoji表情和颜文字的兼容问题

    2021年11月3日
    69
  • clion 2021 激活码_最新在线免费激活

    (clion 2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    55
  • [ASP.net]web.config的customErrors与httpErrors的区别

    [ASP.net]web.config的customErrors与httpErrors的区别之前一直知道设置web.config(其实就是xml文件)的customErrors的error来指向自定义的错误页的URL,但是今天在调试的时候发现customErrors无法跳转到自定义的页面,在

    2022年7月1日
    31

发表回复

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

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