SpringBoot面试题

1. SpringBoot优点

独立运行。
内嵌了servlet,tomat等,不需要打成war包部署到容器中,只需要将SpringBoot项目打成jar包就能独立运行。

简化配置
spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。各种常用组件及配置已经默认配置完成,无需过多干预。

避免大量的Maven导入和各种版本冲突

2. SpringBoot的核心注解是什么?由那些注解组成?

核心注解为:@SpringBootApplication

该注解主要由三个注解组成:

  1. @SpringBootConfiguration():代表当前是一个配置类
  2. @EnableAutoConfiguration(): 打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
  3. @ComponentScan():指定扫描哪些Spring注解

3. SpringBoot自动配置原理是什么?

  1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。
  2. 查看@EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入一些组件。
  3. 查看AutoConfigurationImportSelector,其中selectImports(AnnotationMetadata annotationMetadata)方法内 最终调用getCandidateConfigurations()方法
  4. 查看 getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes),获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories"
  5. 然后把扫描到的这些文件包装成Properties对象。
  6. 从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
    简而言之,整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。

4. 运行 SpringBoot 有哪几种方式?

  1. 直接执行 main 方法运行
  2. 打成jar包,通过java -jar命令直接运行
  3. 用 Maven/ Gradle 插件运行

5. SpringBoot 需要独立的容器运行吗?

不需要,SpringBoot内置tomcat/jetty等容器

6. 开启SpringBoot 特性有哪几种方式?

1 继承spring-boot-starter-parent项目
2 导入spring-boot-dependencies项目依赖

7. SpringBoot 打成的jar和普通的jar有什么区别 ?

SpringBoot打成jar包可以直接通过java -jar *.jar启动项目,但是不能够像普通jar包一样被其他项目引用。
普通jar解压后就是包名,可以直接引用内部的类,而SpringBoot解压后BOOT/classes目录下才是真正的代码,因此不能被直接引用。
如果需要被引用可以配置pom,将SpringBoot打包成两个jar包,一个可执行,一个可引用。

8. Spring Boot的配置文件格式

YAML / properties
yml文件格式写法更加精简,减少配置文件的冗余性。

8.1 读取配置文件

@Value,@ConfigurationProperties

9. 你如何理解SpringBoot配置加载顺序?

9.1 核心配置文件

Spring Boot的核心配置文件是application和bootstrap配置文件。

9.2 加载顺序

bootstrap.yml先加载,application.yml后加载

9.3 区别

bootstrap.yml ,application.yml都可以配置参数;
bootstrap主要是系统级别的配置,这些参数一般不会轻易变动,application一般是应用级别的配置

10. SpringBoot事务的使用

SpringBoot的事物很简单,首先使用注解EnableTransactionManagement开启事物之后,然后在Service方法上添加注解Transactional便可。

11. Async异步调用方法

在SpringBoot中使用异步调用是很简单的,只需要在方法上使用@Async注解即可实现方法的异步调用。 注意:需要在启动类加入@EnableAsync使异步调用@Async注解生效。

12. 如何使用SpringBoot实现异常处理?

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个ControlerAdvice 类,来处理控制器类抛出的所有异常。

13. 如何禁用一个特定自动配置类

@SpringBootApplication(exclude= {Order.class})
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableAutoConfiguration(excludeName={Foo.class})

14. 如何使用SpringBoot实现分页和排序?

使用Spring Boot实现分页非常简单。使用Spring Data-JPA可以实现将可分页的传递给存储库方法。

15. SpringBoot、Spring MVC和Spring有什么区别?

Spring:主要用来创建IOC容器,依赖注入,实现程序间的松耦合
SpringMVC: 主要是用来做WEB开发,通过各种组件的协调配合,简化Web应用的开发
SpringBoot: SpringBoot更像是一个管家,当使用到对应功能时,只需要导入指定应用启动器,SpringBoot就能够在底层默认其配置,大大简化了开发所需的繁杂配置

16. 如何理解Spring Boot中的Starters?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa 启动器依赖就能使用了

17. 什么是JavaConfig?

@Configuration —>也会被spring容器托管,注册到容器中
@Bean---->相当于注册一个bean标签
在这里插入图片描述
在这里插入图片描述

来源:https://www.cnblogs.com/sun-10387834/p/15665760.html
https://zhuanlan.zhihu.com/p/82805889
https://blog.csdn.net/m0_58479954/article/details/124852158

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值