1.spring boot面试题

Spring Boot基础

1.什么是spring boot?

通过自动配置方式简化Spring应用的开发,弱化配置,遵循约定大于配置的原则,使开发者专注于业务开发而无需过多考虑配置相关操作,通过启动类的main方法一键启动应用。

 

2.spring boot有哪些有点?

1、独立运行
     内嵌了servlet,tomat等,不需要打成war包部署到容器中,只需要将SpringBoot项目打成jar包就能独立运行。 
2、简化配置
     启动器自动依赖其他组件,简少了 maven 的配置。各种常用组件及配置已经默认配置完成,无需过多干预。
3、避免大量的Maven导入和各种版本冲突 4、应用监控 Spring Boot 提供一系列端点可以监控服务及应用。

 

3.spring boot的核心注解是什么?由哪些注解组成?

  核心注解为:@SpringBootApplication

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

    @SpringBootConfiguration:代表当前是一个配置类

    @EnableAutoConfiguration:启动自动配置

    @ComponentScan:指定扫描哪些Spring注解

 

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

 

1、SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。

2、查看@EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入一些组件。

3、然后这个注解会扫描所有jar包类路径下"META-INF/spring.factories"

4、然后把扫描到的这些文件包装成Properties对象。

5、从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。

 

简而言之,整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。

 

5.如何理解spring boot配置加载顺序?

依次为: bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

其中 bootstrap.properties 配置为最高优先级

先加载的会被后加载的覆盖掉,所以.properties和.yml同时存在时,.properties会失效,.yml会起作用

 

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

1、直接执行 main 方法运行
2、打包用Java命令行执行
3、用 Maven/ Gradle 插件运行

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

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

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

  继承spring-boot-starter-parent项目

  导入spring-boot-dependencies项目依赖 

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

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

10.SpringBoot启动时都做了什么?

1.SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值

2.将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;

3.整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;

4.它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;

5.有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作

 

SpringBoot配置

1,什么是YAML?

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

2.YAML 配置的优势在哪里 ?

1 配置有序,在一些特殊的场景下,配置有序很关键
2 支持数组,数组中的元素可以是基本数据类型也可以是对象
3 简洁

相比 properties 配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。

3.SpringBoot 是否可以使用 XML 配置 

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

4.SpringBoot核心配置文件是什么?

bootstrap.propertiesapplication.properties

5.bootstrap.properties和application.properties 有何区别 ?

  bootstrap(.yml 或者 .properties):boostrap 由父 APPlicationContext 加载的,比APPlicaton优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在                                                                    SpringCloud Config 或者Nacos中会用到它。且boostrap里面的属性不能被覆盖;

  APPlication (.yml或者.properties):由APPlicatonContext 加载,用于 SpringBoot项目的自动化配置。

6.什么是Spring Profiles?

为了适应多环境配置,可以在项目中配置多个application配置文件,根据应用场景不同,通过application-*中的*来决定启用某个配置文件。

SpringBoot安全性

1.如何实现SpringBoot应用程序的安全性?

为了实现SpringBoot的安全性,我们使用spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。 

2.比较一下Spring Security 和Shiro各自的优缺点 ?

3.SpringBoot中如何解决跨域问题 ?

4,什么是 CSRF 攻击?

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

6.如何在SpringBoot中禁用Actuator端点安全性?

7.如何监视所有SpringBoot微服务?

SpringBoot进阶

1.什么是 WebSockets?

2.什么是 Spring Data?

3.什么是 Spring Batch?

4.什么是 FreeMarker 模板?

5.如何集成 SpringBoot和ActiveMQ

6.Swagger用过麽?他用来做什么?

7.前后端分离,如何维护接口文档 ?

8.SpringBoot项目如何热部署

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

10.spring-boot-starter-parent 有什么用?

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

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

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

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

15.SpringBoot 中如何实现定时任务?

 

posted @ 2022-08-21 15:49  midiyu  阅读(243)  评论(0编辑  收藏  举报