Springboot面试44问

1.什么是Springboot?

Springboot是Spring开源组织的子项目,是Spring组件一站式解决方案;
主要是简化了Spring的开发难度,减少了繁杂的配置,提供了各种启动器,使开发者快速上手。

2.为什么要用Springboot?

快速开发、快速整合、配置简化、内嵌服务容器。

3.Springboot和Springcloud的区别?

Springboot是快速开发的Spring框架;
Springcloud是完整的微服务框架;
Springcloud是一系列框架的集合,将各个有效的、经过考验的框架集合起来,借助Springboot的开发风格再封装,屏蔽了复杂配置和实现原理,为开发者提供简单易懂的开发工具包。

4.Springboot有哪些优点?

编码简单、配置简单、部署简单、监控简单
快速开发、快速整合、简化配置、内嵌服务容器。

5.Springboot的核心注解?

@SpringbootApplication包含:@SpringbootConfiguration、@ComponentScan、@EnableAutoConfigurantion。

6.Springboot支持的日志框架?

Java util Logging、Log4j2、Logback(默认)。

7.Springboot Starter的工作原理?

(1)Springboot在启动时会去依赖的Starter包中读取/META-INF/spring.factories文件
(2)根据spring.factories配置加载AutoConfigure类
(3)根据@Conditional注解的条件,将符合条件的Bean注入IOC容器,进行自动装配。

8.Springboot2.x新特性?

(1)JDK版本升级:基于1.8,支持1.9
(2)支持HTTP/2
(3)响应式Spring编程支持:响应式编程是完全异步和非阻塞的,基于事件驱动模型而非传统的线程模型。

9.Springboot支持的前端框架

Thymeleaf、Freemarker

10.Springboot的缺点?

硬要说的话就是不用自己的配置,报错难以定位。

11.运行Springboot有几种方式?

(1)直接执行main()方法运行
(2)通过命令行 java -jar方式
(3)使用插件:Maven

12.Springboot需要独立容器运行么?

可以不用,内嵌了Tomcat和Jetty等容器

13.开启Springboot特性有几种方式?

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

14.Springboot热部署的方式?

热部署就是不必重新运行Springboot项目,实现代码自动更新到正在运行的项目中
使用spring-boot-devtools,在pom文件中导入依赖。

15.Springboot事务的使用?

(1)在启动类上加@EnableTransactionManagement注解,开启事务支持(默认已加)
(2)在使用事务的public方法加@Transactional注解。

16.Async异步调用方法?

在Springboot中使用异步调用很简单,只需要在方法上添加@Async注解,在启动类上添加@EnableAsync注解即可。

17.如何在Springboot启动时运行特定的代码?

启动类可以实现接口ApplicationRunner或者CommandLineRunner,两个接口的实现方式一样,都只提供了一个run()方法。

18.Springboot有哪几种读取配置的方式?

(1)@Value
(2)@ConfigurationProperties
(3)@PropertySource
(4)Environment
(5)传统的Properties对象

19.什么是JavaConfig?

Spring 3.0引入,提供了配置Spring IOC容器的纯Java方法,避免使用xml配置。

20.Springboot自动装配原理?

21.Springboot配置的方式?

(1).properties文件
(2).yml文件
(3)系统环境变量
(4)命令行参数

22.什么是yaml?

是一种可读的数据序列化语言,通常用于配置文件,更加结构化、分层配置数据。

23.yaml的配置优势?

配置有序、简洁明了
缺点是不支持通过@PropertySource导入自定义的yml配置。

24.Springboot是否可用xml配置?

推荐使用注解配置而非xml
但也可以通过@ImportResource注解导入xml配置。

25.Springboot的核心配置文件是什么?

(1)application.properties:是应用级别的配置文件,是当前应用程序的配置文件
(2)bootstrap.properties:是系统级别的配置文件,加载外部配置,优先级高于application.properties。

26.什么是Spring Profiles?

在项目开发中,有些配置文件在开发、测试、生产等不同环境中可能是不同的,如数据库连接、redis配置等,Profiles提供了来回切换配置文件的功能
spring.profiles.active: dev

27.Springboot多数据源的拆分思路?

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

28.Springboot多数据源事务如何处理?

(1)方法上添加@Transcational注解,进行事务管理,指定事务管理器
(2)使用jta-atomikos实现分布式事务管理,需在pom中添加依赖。

29.保护Springboot应用程序的方法?

(1)在生产中使用HTTPS
(2)使用snyk检查依赖关系
(3)升级到最新版本
(4)启用CSRF保护
CSRF攻击:是一种跨站点请求伪造攻击,它迫使用户在当前登录的应用程序中执行不需要的操作。

30.如何实现Springboot应用程序的安全性?

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

31.比较一下Spring Security和Shiro的区别?

如果是Springboot项目,一般使用SpringSecurity,提供了该Starter
(1)Spring Security属于重量级安全管理框架
(2)Spring Security概念复杂,配置繁琐
(3)Spring Security功能更强大

32.Springboot如何解决跨域问题?

CORS:跨域资源共享
实现WebMvcConfigurer接口,重写其中的addCorsMappings()方法

33.Springboot的监视器是什么?

Actuator:实现对应用程序运行情况的监控
Actuator的核心是端点,可实现健康状况、审计、统计、HTTP追踪、Bean加载、日志信息、线程信息的监控治理。

34.如何使用Springboot实现全局异常处理?

使用注解@ControllerAdvice + @ExceptionHandler
可以捕获Controller抛出的指定类型异常。

36.Springboot性能如何优化?

(1)优化注解@SpringbootApplication:==>@SpringbootConfiguration+@EnableAutoConfiguration+在需要的Bean上进行显式配置
(2)将Servlet容器由Tomcat替换为Undertow
(3)JVM调优:主要是减少GC回收次数,可以加大初始堆和最大堆内存。

37.热部署

使用devtools

38.Springboot微服务如何实现Session共享?

常见的方案是Spring Session+Redis,将各个服务的Session保存到Redis中。

39.使用过哪些Starter Maven依赖项?

(1)spring-boot-starter-web
(2)spring-boot-starter-test
(3)spring-boot-starter-data-redis
(4)mybatis-plus-boot-starter

40.Springboot中的Starter是什么?

  • overstackflow上有人做过总结:Springboot starter就像是启动器,这个启动器会自动依赖其他组件,一站式获取项目需要的与Spring有关的组件,不需要到处找示例代码或是复制相关依赖。
  • 如果在项目中使用Spring+SpringMVC开发时,需要引入Mybatis框架,传统的需要在xml中定义需要的Bean对象,这一过程十分麻烦,而在Springboot中直接添加mybatis-spring-boot-starter依赖即可。
  • 我认为Starter就是一个jar包,写一个@Configuration配置类,在其中定义需要的Bean,再在Starter包的resources/META-INF/spring.factories文件中写入该配置类,那么Springboot启动时就会按照约定来加载该配置类;开发者只需要在项目中添加这一Starter的依赖,进行相关的属性配置,就可以开始程序开发。
  • 官方维护的Starter以spring-boot-starter为前缀,第三方维护的Starter以spring-boot-starter为后缀。

41.Springboot中如何实现定时服务?

(1)使用@Scheduled注解
(2)使用第三方框架Quartz

42.spring-boot-starter-parent的作用?

(1)统一定义配置:UTF-8编码、Java1.8版本
(2)统一依赖及版本号:继承spring-boot-dependencies,添加依赖时不需要写版本号。

43.Springboot如何实现打包?

Maven -clean --> package

44.Springboot打成的jar包和普通jar包的区别?

Springboot打成的jar包可以直接运行,用java -jar命令,但其不可被其他项目依赖;
普通jar包解压后就是包名,包内就是需要的代码,Springboot打成的jar包解压后在/BOOT-INF/classes目录下才是需要的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值