Spring Boot面试题TOP1,值得观看

Spring Boot面试题TOP1,值得观看

1.什么是Spring Boot ?

是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
Spring Boot还提供了嵌入式HTTP服务器、命令行接口工具、多种插件等等,使得应用程序的测试和开发简单起来。
它集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于 Java 的配置),开发者能够更加专注于业务逻辑。

⭐SpringBoot来简化Spring应用开发,约定大于配置,去繁化简

2.SpringBoot 优缺点 ?

优点

1、快速构建项目 (使用 Spring 项目引导页面可以在几秒构建一个项目)
2、对主流开发框架的无配置集成
3、项目可独立运行,无须外部依赖Servlet容器 (支持运行期内嵌容器,如 Tomcat、Jetty)
4、提供运行时的应用监控
5、强大的开发包,支持热启动(极大的提高了开发、部署效率)
6、与云计算的天然集成
7、代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发及维护来说,更大的节约了成本。

缺点

1、集成度较高,使用过程中不太容易了解底层。

3.Spring Boot 的配置文件有哪几种格式?它们有什么区别?

主要有.properties 和 .yml格式,它们的区别主要是书写格式不同。另外,.yml 格式不支持 @PropertySource 注解导入配置。

4.Spring Boot 有哪几种读取配置的方式?

Spring Boot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量。

#读取application文件

在application.yml或者properties文件中添加:

info.address=USA info.company=Spring info.degree=high

@Value注解读取方式
@Value("${info.address}")
   private String address;
@ConfigurationProperties注解读取方式
@Component
@ConfigurationProperties(prefix = "info")
public class InfoConfig2 {
 
   private String address;
   private String company;
   private String degree;
 
   public String getAddress() {
       return address;
   }
 
   public void setAddress(String address) {
       this.address = address;
   }
 
   public String getCompany() {
       return company;
   }
 
   public void setCompany(String company) {
       this.company = company;
   }
 
   public String getDegree() {
       return degree;
   }
 
   public void setDegree(String degree) {
       this.degree = degree;
   }
 
}
读取指定文件

资源目录下建立config/db-config.properties:

db.username=root
db.password=123456
@PropertySource+@Value注解读取方式

@Component
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig1 {
 
   @Value("${db.username}")
   private String username;
 
   @Value("${db.password}")
   private String password;
 
   public String getUsername() {
       return username;
   }
 
   public void setUsername(String username) {
       this.username = username;
   }
 
   public String getPassword() {
       return password;
   }
 
   public void setPassword(String password) {
       this.password = password;
   }
 
}
注意:@PropertySource不支持yml文件读取。

@PropertySource+@ConfigurationProperties注解读取方式
@Component
@ConfigurationProperties(prefix = "db")
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig2 {
 
   private String username;
   private String password;
 
   public String getUsername() {
       return username;
   }
 
   public void setUsername(String username) {
       this.username = username;
   }
 
   public String getPassword() {
       return password;
   }
 
   public void setPassword(String password) {
       this.password = password;
   }
 
}

Environment读取方式 以上所有加载出来的配置都可以通过Environment注入获取到。
@Autowired
private Environment env;
 
// 获取参数
String getProperty(String key);

5.SpringBoot 实现热部署有哪几种方式?

Spring Loaded
Spring-boot-devtools

6.你如何理解 Spring Boot 配置加载顺序?

在 Spring Boot 里面,可以使用以下几种方式来加载配置。
1)properties文件;
2)YAML文件;
3)系统环境变量;
4)命令行参数;

配置属性加载的顺序如下:
1、开发者工具 Devtools 全局配置参数;
2、单元测试上的 @TestPropertySource
注解指定的参数;
3、单元测试上的 @SpringBootTest 注解指定的参数;
4、命令行指定的参数,如 java -jar springboot.jar --name=“Java技术栈”;
5、命令行中的 SPRING_APPLICATION_JSON 指定参数,
如 java -Dspring.application.json=‘{“name”:“Java技术栈”}’ -jar springboot.jar
6、ServletConfig 初始化参数;
7、ServletContext 初始化参数;
8、JNDI参数(如 java:comp/env/spring.application.json);
9、Java系统参数(来源:System.getProperties());
10、操作系统环境变量参数;
11、RandomValuePropertySource 随机数,仅匹配:ramdom.*;
12、JAR包外面的配置文件参数(application-{profile}.properties(YAML))
13、JAR包里面的配置文件参数(application-{profile}.properties(YAML))
14、JAR包外面的配置文件参数(application.properties(YAML))
15、JAR包里面的配置文件参数(application.properties(YAML))
16、@Configuration配置文件上 @PropertySource 注解加载的参数;
17、默认参数(通过 SpringApplication.setDefaultProperties 指定);

7.Spring Boot 可以兼容老 Spring 项目吗,如何做?

可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。

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

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。

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

1)打包用命令或者放到容器中运行

2)用 Maven/ Gradle 插件运行

3)直接执行 main 方法运行

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

可以不需要,内置了 Tomcat/ Jetty 等容器。

11.什么是 CSRF 攻击?

CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。

12.SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:

@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。

13.什么是 FreeMarker 模板?

FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码,而设计人员可以处理 html 页面设计。最后使用freemarker 可以将这些结合起来,给出最终的输出页面。

14.Spring Boot中的监视器是什么?

Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。
有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

15.什么是YAML?

YAML是一种人类可读的数据序列化语言。它通常用于配置文件。

与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

16.保护 Spring Boot 应用有哪些方法?

  1. 在生产中使用HTTPS
  2. 使用Snyk检查你的依赖关系
  3. 升级到最新版本
  4. 启用CSRF保护
  5. 使用内容安全策略防止XSS攻击

17.Spring Boot 如何定义多套不同环境配置?

applcation.properties

application-dev.properties
application-test.properties
application-prod.properties

18.什么是JavaConfig?

Spring JavaConfig是Spring社区的产品,它提供了配置Spring
IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于:

面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。

减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。

JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。

19.什么是 Spring Batch?

Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。

20. 什么是 WebSockets?

WebSocket是一种计算机通信协议,通过单个TCP连接提供全双工通信信道。
1、WebSocket是双向的 -使用 WebSocket 客户端或服务器可以发起消息发送。
2、WebSocket是全双工的 -客户端和服务器通信是相互独立的。
3、单个TCP连接 -初始连接使用 HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用 于所有未来的通信
4、Light与http相比,WebSocket消息数据交换要轻得多。

累了欣赏一下

Ps: 内容来自网络

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一些常见的Spring Boot面试题。以下是一些常见的问题和答案: 1. 什么是Spring BootSpring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了Spring应用程序的配置和部署过程,并提供了一套开箱即用的功能,如自动配置、入式服务器等。 2. Spring Boot的主要特点有哪些? - 简化配置:Spring Boot通过自动配置和约定大于配置的原则,减少了繁琐的配置。 - 内服务器:Spring Boot可以使用内TomcatJetty或Undertow服务器,无需外部容器。 - 自动配置:Spring Boot根据项目的依赖自动配置应用程序。 - 简化依赖管理:Spring Boot使用起步依赖(Starter)来管理依赖关系,简化了依赖管理。 - Actuator:Spring Boot提供了Actuator模块,可以监控和管理应用程序。 3. Spring Boot如何实现自动配置? Spring Boot通过条件注解和自动配置类实现自动配置。条件注解根据条件判断是否需要进行自动配置,自动配置类提供了默认的配置。 4. 如何在Spring Boot中配置数据源? 在Spring Boot中,可以通过在application.properties或application.yml文件中配置数据源相关属性来配置数据源。例如,可以配置数据库的URL、用户名、密码等。 5. 如何启用Spring Boot的日志输出? Spring Boot使用了Commons Logging作为日志抽象层,默认使用Logback作为日志实现。可以通过在application.properties或application.yml文件中配置相关属性来控制日志输出。 6. 如何在Spring Boot中实现跨域请求? 可以通过在控制器类或方法上添加@CrossOrigin注解来实现跨域请求。也可以通过配置WebMvcConfigurer来全局配置跨域请求。 7. 如何在Spring Boot中实现缓存? Spring Boot提供了对多种缓存技术的支持,如Ehcache、Redis等。可以通过在pom.xml文件中添加相应的依赖,并在配置文件中配置相关属性来启用缓存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值