美文网首页Java面试篇
面试题之SpringBoot

面试题之SpringBoot

作者: TZX_0710 | 来源:发表于2020-09-08 16:28 被阅读0次
    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来实现的,它提供一个自动化配置装配类。在这个配置中通过条件来决定一个配置是否生效。然后提供了一系列的默认配置,也可以开发者自定义配置

    相关文章

      网友评论

        本文标题:面试题之SpringBoot

        本文链接:https://www.haomeiwen.com/subject/yazcsktx.html