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


相关推荐

  • JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决[通俗易懂]

    JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决[通俗易懂]JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

    2022年4月23日
    70
  • pycharm不会自动补全括号_pycharm自动提示

    pycharm不会自动补全括号_pycharm自动提示安装pycharm后,输入代码后,没有补全提示首先检查是否关闭了代码提示,如下图,将红框中“PowerSaveMode”前的勾去掉第二步,如果在输入某些代码时还是没有补全提醒,可能是配置好python环境则点击file->settings->projectInterpreter,如下图选择安装的python输入代码就会有提示了…

    2022年8月25日
    28
  • toArray()方法使用说明「建议收藏」

    toArray()方法使用说明「建议收藏」ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[] a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。

    2022年5月15日
    52
  • MATLAB循环_matlab如何循环计算

    MATLAB循环_matlab如何循环计算MATLAB循环1.   while循环   在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。语法MATLAB中while循环的语法是:while<expression>  <statements>end只要表达式(expression)为true,while循环将重复执行程序语句(statements)。当结果为非空并且…

    2022年10月7日
    1
  • Lua入门教程_自学素描基本入门教程

    Lua入门教程_自学素描基本入门教程什么是LuaLua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(PontificalCatholicUniversityofRiodeJaneiro)里的一个研究小组,由Rober

    2022年8月1日
    9
  • JSP页面通过URL传递中文参数出现中文乱码问题

    JSP页面通过URL传递中文参数出现中文乱码问题做项目时遇到这个问题问题描述:通过点击这个参数名并进行跳转control层,进行参数接受并处理。${cs.name}里面包含中文<a href="${pageContext.request.contextPath}/recommend_navCategory?name=${cs.name}">${cs.name}</a>服务器端:ISO-8859-1是tomca…

    2022年6月13日
    30

发表回复

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

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