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.properties和application.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 中如何实现定时任务?