Springboot面试题一

一 什么是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注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值