springBoot-面试题

1.谈谈你对springBoot的理解

一种一站式解决方案,简化了spring繁重的配置,

提供了各种启动器,让开发者更好上手。

2.为什么使用springBoot或springBoot的优点


(1)版本锁定: 解决maven依赖版本冲突问题
(2)起步依赖: 解决jar过多问题
(3)自动配置: 解决配置文件过多问题
(4)内置tomcat: 通过内置tomcat,不需要其他外置tomcat,也能运行javaEE。

3. springBoot与springCloud 区别


SpringBoot是快速开发的Spring框架,SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。

4.springBoot的核心配置文件有哪些,作用是什么


application 和 bootstrap 配置文件。
application: 用于项目的自动化配置。
bootstrap: 一些不能被覆盖的属性和加密或解密的场景。比application要先加载。

5.springBoot配置文件有几种类型,区别是什么


.yml和.properties
区别主要是书写方法不一样,.properties加载优先级大于.yml。

server.port = 8088 //.properties方式

server:           //.yml方式
    port:8088


6.什么是热部署?springBoot怎么实现热部署


热部署: 修改代码不需要重启,就可以实现编译并部署到服务器上。

(1)在开发时修改代码不需要重启服务,节省了时间。

(2)部署在服务器上的程序,可以在不停止的情况下进行升级。
①使用devtools。在配置文件中把devtools.restart.enabled 设置为 true。每次都需要build一下才行。
②idea设置实现热部署。

7.什么是 JavaConfig?


JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法,有助于避免使用 XML 配置。

8.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的或介绍一下

@SpringBootApplication 注解
@SpringBootApplication:包含了三个注解。
①SpringBootConfiguration: 实现了@Configuration注解,实现配置文件的功能。
②@EnableAutoConfiguration: 打开自动配置的功能,也可以关闭某个自动配置的选项, 例
如: java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
③@ComponentScan: Spring组件扫描。

9.springBoot的启动器starter


可以通过启动器去集成其他技术:web、redis、mybatis等。
在pom配置 spring-boot-starter-web,就可以进行web开发。

原理:会加载这些配置类,放进spring容器中,就可以从容器中获取这些类。

10.springBoot项目的启动方法

1. main 方法
2. 命令行 java -jar 的方式
3. mvn/gradle

11.如何在 Spring Boot 启动的时候运行一些特定的代码?


可以实现接口 ApplicationRunner或者 CommandLineRunner,这两个接口实现方式一样(项目启动完成后执行) ,它们
都只提供了一个 run 方法,在run方法写你的业务逻辑。

12.springBoot的全局异常处理


@ControllerAdvice:开启了全局异常的捕获。然后自定义一个方法使用@ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。

@ControllerAdvice
public class ExceptionUtil{

    @ExceptionHandler(value =Exception.class)
    @ResponseBody
    public String exceptionHandler(Exception e){
        System.out.println("全局异常捕获:"+e);
        return "全局异常捕获,错误原因:"+e.getMessage();
    }
}



13.spring Boot常用注解


@SpringBootApplication: SpringBootConfiguration配置类、componentScan扫描包、EnableAutoConfiguration导入其他配置类
@RestController: @ResponseBody和@Controller的作用。
@Component,@Service,@Controller,@Repository: 将类注入容器。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping: 映射请求,只能接收的对应的请求。
@AutoWired: 按照类型匹配注入。
@Qualifier: 和AutoWired联合使用,在按照类型匹配的基础上,在按照名称匹配。
@Resource: 按照名称匹配依赖注入。
@Bean: 用于将方法返回值对象放入容器。
@RequestParam: 获取查询参数。即url?name=这种形式
@RequestBody: 该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求。@PathVariable: 获取路径参数。即url/{id}这种形式。
@Value: 将外部的值动态注入到 Bean 中。
    @Value(“${}”):可以获取配置文件的值。
    @Value(“#{}”):表示SpEl(Spring Expression Language是Spring表达式语言,可以在运行时查询和操作数据。)表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。

14. Spring Boot 中的监视器是什么?

Spring boot actuator spring 启动框架中的重要功能之一。 Spring boot 监视器可帮助您访
问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和
监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器
模块公开了一组可直接作为 HTTP URL 访问的 REST 端点来检查状态。

15 .如何在自定义端口上运行 Spring Boot 应用程序?
 

为了在自定义端口上运行 Spring Boot 应用程序,您可以在 application.properties 中指定端 口。
server.port = 8090

16 .什么是 YAML

YAML 是一种可读性高的数据序列化语言。它通常用于配置文件。
与属性文件相比,如果我们想要在配置文件中添加复杂的属性, YAML 文件就更加结构
化,而且更少混淆。可以看出 YAML 具有分层配置数据。

17 如何实现 Spring Boot 应用程序的安全性?

为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添
加安全配置。

18 .如何使用 Spring Boot 实现异常处理?

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

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

不需要,内置了 Tomcat/Jetty

20. application.propertiesapplication.yml文件可放位置?优先级?

这些配置文件可以放在以下位置(按优先级从高到低排序):

项目根目录下的config子目录中:

项目根目录下:

classpath的config包内:

在Maven或Gradle等构建工具中,这通常指的是src/main/resources/config目录。

classpath的根目录下:

在Maven或Gradle等构建工具中,这通常指的是src/main/resources目录。

21. 针对请求访问的几个组合注解?

@PatchMapping
@PostMapping
@GetMapping
@PutMapping
@DeleteMapping

22. SpringBoot 中的starter

可以理解成对依赖的一种合成, starter 会把一个或一套功能相关依赖都包含进来,避免了自己去依赖费事,还有各种包的冲突问题。大大的提升了开发效率。
并且相关配置会有一个默认值,如果我们自己去配置,就会覆盖默认值。

23. SpringBoot集成Mybatis?

mybatis-spring-boot-starter

24. 什么是SpringProfiles?

一般来说我们从开发到生产,经过开发 (dev) 、测试( test )、上线 (prod) 。不同的时刻我们会用不同的 配置。Spring Profiles 允许用户根据配置文件( dev test prod 等)来注册 bean 。它们可以让我们 自己选择什么时候用什么配置。

25. 不同的环境的配置文件?

可以是 application-{profile}.properties/yml ,但默认是启动主配置文件 application.properties, 一般
来说我们的不同环境配置如下。
`application.properties` :主配置文件
`application-dev.properties` :开发环境配置文件
`application-test.properties` :测试环境配置文件
`application.prop-properties` :生产环境配置文件

26. 开启SpringBoot特性的几种方式?

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

27. 编写测试用例的注解?

@SpringBootTest

28. SpringBoot异常处理相关注解?

@ControllerAdvice
@ExceptionHandler

30. SpringBoot读取配置相关注解有?

@PropertySource
@Value
@Environment
@ConfigurationProperties

31. SpringBoot自动配置原理?

@EnableAutoConfiguration ( 开启自动配置 ) 该注解引入了 AutoConfigurationImportSelector ,该类中 的方法会扫描所有存在META-INF/spring.factories jar 包。

32.bootstrap.yml」 和「application.yml?

bootstrap.yml 优先于 application.yml

33. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动
器, Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置
文件输出到控制台或者文件中。

34. SpringBoot事物的使用

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

35. Async异步调用方法

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

36. SpringBoot的自动配置原理是什么

主要是 Spring Boot 的启动类上的核心注解 SpringBootApplication 注解主配置类,有了这个主配置
类启动时就会为 SpringBoot 开启一个 @EnableAutoConfiguration 注解自动配置功能。
有了这个 EnableAutoConfiguration 的话就会:
1. 从配置文件 META_INF/Spring.factories 加载可能用到的自动配置类
2. 去重,并将 exclude excludeName 属性携带的类排除
3. 过滤,将满足条件( @Conditional )的自动配置类返回

37. Spring Boot 是否可以使用 XML 配置 ?

Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通
@ImportResource 注解可以引入一个 XML 配置。

38. spring boot 核心配置文件是什么?

bootstrap.properties application.properties 有何区别 ?
单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文件,但是在结合
Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。
spring boot 核心的两个配置文件:
bootstrap (. yml 或者 . properties) boostrap 由父 ApplicationContext 加载的,比
applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring
Cloud 配置就会使用这个文件。且 boostrap 里面的属性不能被覆盖;
application (. yml 或者 . properties) : 由 ApplicatonContext 加载,用于 spring boot 项目
的自动化配置。

39. SpringBoot多数据源拆分的思路??

先在 properties 配置文件中配置两个数据源,创建分包 mapper ,使用 @ConfigurationProperties
读取 properties 中的配置,使用 @MapperScan 注册到对应的 mapper 包中

40. SpringBoot多数据源事务如何管理??

第一种方式是在 service 层的 @TransactionManager 中使用 transactionManager 指定
DataSourceConfig 中配置的事务
第二种是使用 jta-atomikos 实现分布式事务管理

41. Spring Boot 中如何解决跨域问题 ?

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请
求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 ( CORS Cross
origin resource sharing ) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的
SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS
现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

42. 如何使用 Spring Boot 实现全局异常处理?

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

43. SpringBoot微服务中如何实现 session 共享 ?

在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis
session 。这样就实现了 session 共享, Spring Session 基于 Spring 中的代理过滤器实现,使
session 的同步操作对开发人员而言是透明的,非常简便。

44. 您使用了哪些 starter maven 依赖项?

使用了下面的一些依赖项
spring-boot-starter-web 嵌入 tomcat web 开发需要 servlet jsp 支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis 数据库支持
spring-boot-starter-data-solr solr 支持
mybatis-spring-boot-starter 第三方的 mybatis 集成 starter
自定义的 starter( 如果自己开发过就可以说出来 )

45. Spring Boot 中如何实现定时任务 ?

Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一 - 个则是使用第三方框架 Quartz
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。

46. SpringBoot如何实现打包

进入项目目录在控制台输入 mvn clean package clean 是清空已存在的项目包, package 进行打
或者点击左边选项栏中的 Mavne ,先点击 clean 在点击 package

47.Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java - jar xxx.jar
令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。
Spring Boot jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的 jar 包,解压
后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT
INF\classes 目录下才是我们的代码,因此无法被直接引用。如果非要引用,可以在 pom.xml
文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是建立在现有Spring框架之上的一种方法,它可以帮助我们以最少的工作量更加健壮地使用现有的Spring功能。关于Spring Boot的源码面试题,以下是一些可能的问题: 1. Spring Boot是如何简化Spring应用程序的开发和配置的? 2. 请简要解释一下Spring Boot的核心原理和机制。 3. Spring Boot的自动配置是如何工作的?可以举一个例子来说明吗? 4. Spring Boot中的关键注解是什么?它们分别有什么作用? 5. 如何自定义和扩展Spring Boot的自动配置? 6. Spring Boot的启动过程是怎样的?请描述一下。 7. @SpringBootApplication注解的作用是什么?它与其他Spring注解有什么区别? 8. Spring Boot Actuator的作用是什么?如何将其集成到项目中? 这些问题可以帮助面试者深入了解Spring Boot的原理和机制,以及如何在实际项目中使用和扩展它。当然,在面试中还可能出现其他与Spring Boot源码相关的问题,因此准备时应该全面了解Spring Boot的核心概念和源码结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springBoot常见面试题(2023最新)](https://blog.csdn.net/twotwo22222/article/details/129260502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring面试题汇总3:SpringBoot面试题及答案整理](https://blog.csdn.net/a724888/article/details/116520204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值