Java面试篇

面试题之SpringBoot

2020-09-08  本文已影响0人  TZX_0710
  1. 什么是SpringBoot?

SpringBoot是Spring开源阻止下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,使开发者可以快速上手。

  1. 为什么要使用SpringBoot?

快速开发,快速整合,配置简单,内嵌服务容器

  1. SpringBoot有哪些有点?
  1. 容易上手,提成开发效率,简单开发。
  2. 开箱即用,简省繁琐配置
  3. 提供了一系列大型项目的非业务性功能。例如:内嵌服务器、运行数据监控、运行状况检查、和外部优化配置等
    总结:编码简单、配置简单、部署简单、监控变简单
  1. SpringBoot核心注解是哪几个?

启动类上面的@SpringBootApplication,它也是SpringBoot的核心注解,包含了以下3个注解

  1. @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能
  2. @EnableAutoConfiguration:打开自动配置的功能
  3. @ComponentScan:扫描组件
  1. SpringBoot Starter的工作原理

在SpringBoot启动时由@SpringBootApplication注解会自动去maven去读取每个starter中的spring.factories文件,该文件里面配置了所有需要被创建的bean,并且进行自动装配把bean注入Spring content中去

  1. SpringBoot2.x 与SpringBoot1.x有什么区别?
  1. 配置变更
  2. JDK版本升级
  3. 第三方类库升级
  4. 响应式Spring编程支持
  5. Http/2支持
  6. 配置属性绑定
  1. SprigBoot支持什么前端模板?

thymeleaf、freemarker、jsp

  1. 开启SpringBoot特性有哪几种方式?
  1. 集成Spring-boot-starter-parent项目
  2. 导入Spring-boot-dependencies项目依赖
  1. SpringBoot实现热部署有哪几种方式?
  1. Spring loaded
  2. Spring-boot-devtools
  1. SpringBoot事物怎么使用?
  1. 在SpringBoot启动类上面使用@EnableTransactionManagement 开启事物之后 在service方法上面使用@Transactional
  1. Aysnc 异步调用方法

在SpringBoot中使用异步调用是很简单,只需要在方法上使用@Async注解就可以实现方法的以部调用。需要开启@EnableAsync开启@Async才会生效。

  1. 如何在SpringBoot 启动的时候运行一些特定的代码?

可以实现接口ApplicationRunnher或者CommandLineRunner,然后在run方法执行特定操作,该类会在SpringBoot启动完成运行

  1. SpringBoot 有哪几种读取配置的方式?

SpringBoot可以通过@PropertySource,@Value,@Enviornment,@ConfigurationProperties注解来绑定变量。

  1. SpringBoot的自动配置原理是什么?
  1. 主要是SpringBoot的启动类上的核心注解@SpringBootApplication注解配置类,有了这个主配置类启动的时候就会为SpringBoot开启一个@EnableAutoConfiguration注解自动配置功能
    有了这个@EnableAutoConfiguration 的话就会
  2. 从配置文件META_INF/Spring.factories加载可能用到的自动配置类
  3. 去重,并将execulde和excludeName属性携带的类排除
  4. 过滤,将满足条件的自动配置类返回
  1. SpringBoot可以使用哪几种方式来加载配置?
  1. properties
  2. YAML文件
  3. 系统环境变量
  4. 命令行参数
    还有更多方式
  1. 什么是YAML?

YAML是一种可读的序列化语言,通常用于配置文件,与属性文件相比,YAML更加结构化,更少混淆。

  1. YAML配置的优势有哪些?
  1. 配置有序
  2. 简单明了
  3. 相比properties配置文件,YAML还有一个缺点,不支持@PropertySource注解导入自定义的YAML配置
  1. SpringBoot是否可以使用XML配置?

是可以的,但是SpringBoot 推荐采用Java配置而且而非XML配置。

  1. Springboot 核心配置文件是什么?bootstrap.properties 和application.properties的区别
  1. bootstrap由父ApplicationContext加载的,比application优先加载,配置的应用程序上下文的引导阶段生效。一般来说在SpringCloud配置的时候会使用到这个文件
  2. application由ApplicationContext加载,用于SpringBoot项目的自动化配置
  1. SpringBoot多数据源拆分思路?

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

  1. SpringBoot多数据源事物如何管理?
  1. 第一种方式是在service层的@TransactionManager中使用transactionManager指定datasourceConfig配置的事物
  2. 第二种是使用ta-atomikos实现分布式事物管理
  1. 保护SpringBoot应用的方法有哪些?
  1. 生产种使用Https
  2. 使用snyk检查依赖关系
  3. 升级到最新版本
  4. 启动CRSF 保护
  5. 使用安全策略方式XSS攻击
  1. 如何实现SpringBoot应用程序的安全性?

使用spring-boot-starter-security依赖项,并且添加安全配置。配置类扩展WebSecurityConfigurerAdapter 并且覆盖

  1. 比较Spring security和Shiro的优缺点?
  1. security是一个重量级框架,shiro是个轻量级框架
  2. security 配置繁琐,shiro简单
  3. security功能强大 shiro功能简单
  1. SpringBoot种如何解决跨域问题?

跨域可以在前端通过JSONP来解决,但是只能解决GET请求。SpringBoot可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

  1. SpringBoot中的监视器是什么?

SpringBoot actuator是spring启动框架中的重要功能之一,SpringBoot监视器可帮助访问生产环境的应用当前状态。

  1. 如何监听SpringBoot微服务?

SpringBoot提供监视器端点,以及监控各个微服务的度量,这些端点对于获取是否正常运行很有帮助。我们将使用SpringBoot Actuator之上,它提供了一个webui 使我们可监视多个应用程序的度量

  1. SpringBoot项目如何性能优化?

项目比较大就采用@Compoment指定扫描包范围
在项目启动时设置JVM初始化内存和最大内存相同

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

使用Spring session+redis实现session共享

  1. SpringBoot中的starter到底是什么?

这份starter是基于spring来实现的,它提供一个自动化配置装配类。在这个配置中通过条件来决定一个配置是否生效。然后提供了一系列的默认配置,也可以开发者自定义配置

上一篇下一篇

猜你喜欢

热点阅读