摘要:
1、通俗易懂,适合小白
2、仅做面试复习用,部分来源网络,博文免费,知识无价,侵权请联系!

1. 什么是 Spring Boot 框架?

Spring Boot 是基于 Spring 框架的快速开发框架,它简化了 Spring 应用的初始搭建和开发过程。它通过自动配置和起步依赖减少了大量的配置工作。

2. Spring Boot 框架的有什么优缺点?

优点

  • 快速构建独立 Spring 应用
  • 内嵌服务器,无需部署 WAR 文件
  • 提供自动配置的 starter 项目依赖
  • 提供生产就绪功能如指标、健康检查等
  • 无需 XML 配置

缺点

  • 学习曲线较陡峭
  • 对于非常简单的应用可能过于复杂
  • 自动配置有时难以理解和定制

3. Spring Boot 核心注解都有哪些?

  • @SpringBootApplication:组合注解,包含@Configuration@EnableAutoConfiguration@ComponentScan
  • @RestController:组合@Controller@ResponseBody
  • @RequestMapping:映射 web 请求
  • @Autowired:自动装配依赖
  • @Configuration:标记类为配置类
  • @ComponentScan:组件扫描

4. Spring Boot 的目录结构是怎样的?

典型结构:

src/main/java/com.example.demo/DemoApplication.java  # 主启动类resources/static/    # 静态资源templates/ # 模板文件application.properties # 配置文件test/java/com.example.demo/DemoApplicationTests.java # 测试类

5. Spring Boot 需要独立的容器运行吗?

不需要。Spring Boot 内置了 Tomcat、Jetty 或 Undertow 等服务器容器,可以直接运行。

6. Spring Boot 运行方式有哪几种?

  1. 通过 IDE 直接运行主类
  2. 使用 Maven:mvn spring-boot:run
  3. 打包成可执行 JAR:java -jar app.jar
  4. 打包成 WAR 部署到外部容器

7. Spring Boot 自动配置原理是什么?

通过@EnableAutoConfiguration注解触发,Spring Boot 会检查 classpath 中的 jar 包,根据META-INF/spring.factories文件中定义的自动配置类进行条件化配置。

8. Spring Boot 热部署有几种方式?

  1. 使用 Spring Boot DevTools
  2. 使用 JRebel 插件
  3. 配置 IDE 自动编译

9. Spring Boot 支持哪几种内嵌容器?

  • Tomcat (默认)
  • Jetty
  • Undertow

10. 什么是 Spring Boot Starter?

Starter 是一组方便的依赖描述符,可以一站式获取所需的所有相关技术依赖。例如spring-boot-starter-web包含了开发 web 应用所需的依赖。

11. Spring Boot Starter 有什么命名规范?

官方 starter 命名格式:spring-boot-starter-*
第三方 starter 命名格式:*-spring-boot-starter

12. Spring Boot 启动器都有哪些?

常见的有:

  • spring-boot-starter-web:Web 应用
  • spring-boot-starter-data-jpa:JPA 支持
  • spring-boot-starter-test:测试支持
  • spring-boot-starter-security:安全支持
  • spring-boot-starter-thymeleaf:Thymeleaf 模板

13. 什么是 JavaConfig?

JavaConfig 是 Spring 提供的基于 Java 的配置方式,替代传统的 XML 配置。使用@Configuration注解标记配置类。

14. 什么是 YAML?

YAML 是一种人类友好的数据序列化标准,常用于 Spring Boot 的配置文件。比 properties 文件更结构化。

15. YAML 配置和 properties 配置有什么区别?

  • YAML 支持层次结构,properties 是扁平结构
  • YAML 更易读,适合复杂配置
  • properties 文件更简单,适合简单配置

16. Spring Boot 是否可以使用 XML 配置?

可以,但不推荐。Spring Boot 推荐使用 JavaConfig 或注解配置,但可以通过@ImportResource导入 XML 配置。

17. Spring Boot 中核心配置文件是什么?

application.propertiesapplication.yml,默认放在resources目录下。

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

  • bootstrap.properties:由父 ApplicationContext 加载,优先级更高,常用于配置中心
  • application.properties:由子 ApplicationContext 加载

19. 什么是 Spring Profiles?

Profile 是 Spring 提供的环境隔离机制,可以通过@Profile注解或配置文件指定不同环境的配置。

20. Spring Security 和 Shiro 对比有什么优缺点?

Spring Security

  • 优点:深度集成 Spring 生态,功能全面
  • 缺点:配置复杂,学习曲线陡峭

Shiro

  • 优点:简单易用,轻量级
  • 缺点:功能相对较少,与 Spring 集成需要额外配置

21. 什么是 Spring Batch?

Spring Batch 是 Spring 提供的轻量级批处理框架,用于处理大量数据的批处理作业。

22. 什么是 CSRF 攻击?

跨站请求伪造(CSRF)是一种攻击方式,攻击者诱使用户在已认证的网站上执行非预期的操作。Spring Security 提供了 CSRF 防护。

23. Spring Boot 中监视器是什么?

Spring Boot Actuator 提供的监控端点,可以监控应用运行状态,如/health/metrics等。

24. Spring Boot 中如何禁用 Actuator 端点安全性?

application.properties中添加:

management.security.enabled=false

25. 如何监视所有 Spring Boot 微服务?

可以使用 Spring Boot Admin,它集成了 Actuator 端点,提供统一的监控界面。

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

作为父 POM,提供依赖管理、默认配置和插件配置,简化 Maven 配置。

27. Spring Boot jar 和普通 jar 有什么区别?

Spring Boot jar 是可执行 jar,包含内嵌容器和所有依赖,可以直接运行。普通 jar 需要部署到容器中运行。

28. Spring Boot 中如何实现全局异常处理?

使用@ControllerAdvice@ExceptionHandler注解:

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception e) {return ResponseEntity.status(500).body(e.getMessage());}
}

29. Spring Boot 中如何实现定时任务?

使用@Scheduled注解:

@Component
public class ScheduledTasks {@Scheduled(fixedRate = 5000)public void reportCurrentTime() {System.out.println("Current time: " + new Date());}
}

30. Spring Boot 中如何兼容旧 Spring 项目?

  1. 逐步迁移配置到 JavaConfig
  2. 使用@ImportResource导入旧 XML 配置
  3. 保持兼容的依赖版本

31. Spring Boot 中如何解决跨域问题?

@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "PUT", "DELETE");}
}

32. Spring Boot 内嵌容器默认是什么?

默认是 Tomcat。

33. Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

  • 基于 Spring Framework 5
  • 响应式编程支持
  • 性能改进
  • Actuator 改进
  • 配置属性绑定改进

34. Spring、Spring MVC 和 Spring Boot 有什么区别?

  • Spring:核心框架,提供IoC和AOP
  • Spring MVC:基于 Spring 的 Web MVC 框架
  • Spring Boot:基于 Spring 的快速开发框架,简化配置

35. 如何实现 Spring Boot 应用程序的安全性?

使用 Spring Security:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin();}
}

36. 如何重新加载 Spring Boot 上的更改内容,而无需重启服务?

使用 Spring Boot DevTools 或 JRebel 插件。

37. 如何自定义端口运行 Spring Boot 应用程序?

application.properties中:

server.port=8081

38. Spring Boot 如何禁用某些自动配置特性?

使用@EnableAutoConfiguration的exclude属性:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

39. Spring boot 中当 bean 存在时如何重启执行自动配置?

使用@ConditionalOnMissingBean注解的自动配置类会在没有相应 bean 时生效。

40. Spring Boot 如何编写一个集成测试?

@SpringBootTest
@AutoConfigureMockMvc
class DemoApplicationTests {@Autowiredprivate MockMvc mockMvc;@Testvoid contextLoads() throws Exception {mockMvc.perform(get("/")).andExpect(status().isOk());}
}

41. Spring Boot 中 Actuator 有什么作用?

提供生产就绪功能,如健康检查、指标收集、环境信息等监控端点。

42. Spring Boot 有什么外部配置的可能来源?

  • 命令行参数
  • Java 系统属性
  • 操作系统环境变量
  • 配置文件(properties/yml)
  • @Configuration类

43. Spring Boot 支持松绑定表示什么含义?

属性名可以灵活匹配,如my.property-namemy.propertyNameMY_PROPERTYNAME都会绑定到同一个属性。

44. Spring Boot 如何注册一个定制的自动化配置?

  1. 创建META-INF/spring.factories文件
  2. 添加org.springframework.boot.autoconfigure.EnableAutoConfiguration
  3. 列出全限定名的自动配置类

45. 什么是 Swagger? Spring Boot 如何实现 Swagger?

Swagger 是 API 文档工具。Spring Boot 集成:

<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>
@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}
}

46. 如何使用 Spring Boot 实现分页和排序?

使用 Spring Data JPA:

public interface UserRepository extends JpaRepository<User, Long> {Page<User> findAll(Pageable pageable);
}@GetMapping("/users")
public Page<User> getUsers(Pageable pageable) {return userRepository.findAll(pageable);
}

请求示例:/users?page=0&size=10&sort=name,asc

47. 如何使用 Maven 来构建一个 Spring Boot 程序?

  1. 使用spring-boot-starter-parent作为父POM
  2. 添加所需starter依赖
  3. 使用spring-boot-maven-plugin打包

48. Spring Boot web 应用程序如何部署为 JAR 或 WAR 文件?

JAR:默认方式,使用spring-boot-maven-plugin
WAR

  1. 修改打包方式为war
  2. 继承SpringBootServletInitializer
  3. 配置spring-boot-maven-plugin

49. 什么是 WebSocket?

WebSocket 是一种全双工通信协议,允许服务端主动向客户端推送数据。

50. Spring Boot 和 Spring 有什么区别?

Spring Boot 是基于 Spring 的快速开发框架,简化了配置和部署,提供了自动配置、起步依赖和内嵌服务器等特性。

51. 常见的系统架构风格有哪些?各有什么优缺点?

  1. 单体架构:简单但难以扩展
  2. 分层架构:逻辑清晰但性能有损耗
  3. 微服务架构:灵活可扩展但复杂度高
  4. 事件驱动架构:松耦合但难以调试
  5. 服务导向架构(SOA):重用性好但ESB可能成为瓶颈

52. 什么是 AKF 拆分原则?

AKF扩展立方体理论,三个维度扩展:

  1. X轴:水平复制(克隆)
  2. Y轴:功能拆分(微服务)
  3. Z轴:数据分区(分片)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/83724.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/83724.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/83724.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM——JVM中的字节码:解码Java跨平台的核心引擎

引入 在Java的技术版图中&#xff0c;字节码&#xff08;Bytecode&#xff09;是连接源代码与机器世界的黄金桥梁。当开发者写下第一行public class HelloWorld时&#xff0c;编译器便开始了一场精密的翻译工程——将人类可读的Java代码转化为JVM能够理解的字节码指令。这些由…

Java中的JSONObject详解:从基础到高级应用

Java中的JSONObject详解&#xff1a;从基础到高级应用 在当今前后端分离的架构中&#xff0c;JSONObject已成为Java开发者处理JSON数据的瑞士军刀。本文将深入解析JSONObject的核心机制与实战技巧。 一、JSONObject的本质与实现库 1.1 核心定位 JSONObject是Java中表示JSON对…

在 SpringBoot+Tomcat 环境中 线程安全问题的根本原因以及哪些变量会存在线程安全的问题。

文章目录 前言Tomcat SpringBoot单例加载结果分析多例加载&#xff1a;结果分析&#xff1a; 哪些变量存在线程安全的问题&#xff1f;线程不安全线程安全 总结 前言 本文带你去深入理解为什么在web环境中(Tomcat SpringBoot)会存在多线程的问题以及哪些变量会存在线程安全的…

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…

贪心算法应用:最小反馈顶点集问题详解

贪心算法应用&#xff1a;最小反馈顶点集问题详解 1. 问题定义与背景 1.1 反馈顶点集定义 反馈顶点集(Feedback Vertex Set, FVS)是指在一个有向图中&#xff0c;删除该集合中的所有顶点后&#xff0c;图中将不再存在任何有向环。换句话说&#xff0c;反馈顶点集是破坏图中所…

BiliNote部署实践

​ 开源地址&#xff1a; https://github.com/JefferyHcool/BiliNote &#x1f680; 快速开始 1. 克隆仓库 git clone https://github.com/JefferyHcool/BiliNote.git cd BiliNote mv .env.example .env2. 启动后端&#xff08;FastAPI&#xff09; cd backend pip insta…

用go从零构建写一个RPC(4)--gonet网络框架重构+聚集发包

在追求高性能的分布式系统中&#xff0c;RPC 框架的底层网络能力和数据传输效率起着决定性作用。经过几轮迭代优化&#xff0c;我完成了第四版本的 RPC 框架。相比以往版本&#xff0c;这一版本的最大亮点在于 重写了底层网络框架 和 实现了发送端的数据聚集机制&#xff0c;这…

MySQL 高可用基石 - 复制监控与常见 HA 方案

MySQL 高可用基石 - 复制监控与常见 HA 方案 MySQL 复制核心原理 MySQL 复制允许数据从一个 MySQL 数据库服务器(称为主库 - Primary,旧称 Master)复制到一个或多个其他的 MySQL 服务器(称为从库 - Replica,旧称 Slave)。 复制的主要目的: 高可用性 (High Availability…

微信小程序(uniapp)自定义 TabBar

微信小程序&#xff08;uniapp&#xff09;自定义 TabBar 实现指南 在微信小程序开发中&#xff0c;TabBar 是底部导航栏的重要组件&#xff0c;但官方提供的 TabBar 样式和功能较为基础&#xff0c;无法满足所有项目的需求。本文将详细介绍如何在 uniapp 中实现自定义 TabBar…

MLP实战二:MLP 实现图像数字多分类

任务 实战&#xff08;二&#xff09;&#xff1a;MLP 实现图像多分类 基于 mnist 数据集&#xff0c;建立 mlp 模型&#xff0c;实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入&#xff0c;可视化图形数字&#xff1b; 2、完成数据预处理&#xff1a;图像数据维度转换与…

BUUCTF[HCTF 2018]WarmUp 1题解

BUUCTF[HCTF 2018]WarmUp 1题解 分析解题过程代码审计主体函数CHECK函数&#xff1a; 构造payload 总结 分析 启动靶机&#xff0c;进入网址&#xff0c;是一张滑稽的表情包&#xff1a; 程序化F12查看源码&#xff1a; 发现注释内容&#xff0c;访问 url:/source.php得到…

大陆4D毫米波雷达ARS548调试

本文介绍了大陆ARS548毫米波雷达的调试与测试流程&#xff0c;主要包括以下内容&#xff1a; 设备参数&#xff1a;最大检测距离301m&#xff08;可调93-1514m&#xff09;&#xff0c;支持gPTP时间同步。 接线调试&#xff1a; Windows需使用USB-RJ45转换器 Linux可直接连接网…

TDengine 的 AI 应用实战——运维异常检测

作者&#xff1a; derekchen Demo数据集准备 我们使用公开的 NAB数据集 里亚马逊 AWS 东海岸数据中心一次 API 网关故障中&#xff0c;某个服务器上的 CPU 使用率数据。数据的频率为 5min&#xff0c;单位为占用率。由于 API 网关的故障&#xff0c;会导致服务器上的相关应用…

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…

《一生一芯》数字实验三:加法器与ALU

1. 实验目标 设计一个能实现如下功能的4位带符号位的 补码 ALU&#xff1a; Table 4 ALU 功能列表  功能选择 功能 操作 000 加法 AB 001 减法 A-B 010 取反 Not A 011 与 A and B 100 或 A or B 101 异或 A xor B 110 比较大小 If A<B then out1…

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…

Java并发编程实战 Day 10:原子操作类详解

【Java并发编程实战 Day 10】原子操作类详解 开篇 这是“Java并发编程实战”系列的第10天&#xff0c;我们将深入探讨原子操作类的核心技术——CAS原理、ABA问题以及原子类的实现机制。通过理论结合代码实践的方式&#xff0c;帮助读者理解并掌握如何在实际工作中高效使用原子…

瀚文机械键盘固件开发详解:HWKeyboard.h文件解析与应用

【手把手教程】从零开始的机械键盘固件开发&#xff1a;HWKeyboard.h详解 前言 大家好&#xff0c;我是键盘DIY爱好者Despacito0o&#xff01;今天想和大家分享我开发的机械键盘固件核心头文件HWKeyboard.h的设计思路和技术要点。这个项目是我多年来对键盘固件研究的心血结晶…

2048游戏的技术实现分析-完全Java和Processing版

目录 简介Processing库基础项目构建指南项目结构核心数据结构游戏核心机制图形界面实现性能优化代码详解设计模式分析测试策略总结与展望简介 2048是一款由Gabriele Cirulli开发的经典益智游戏。本文将深入分析其Java实现版本的技术细节。该实现使用了Processing库来创建图形界…

Spring Boot + Elasticsearch + HBase 构建海量数据搜索系统

Spring Boot Elasticsearch HBase 构建海量数据搜索系统 &#x1f4d6; 目录 1. 系统需求分析2. 系统架构设计3. Elasticsearch 与 HBase 集成方案4. Spring Boot 项目实现5. 大规模搜索系统最佳实践 项目概述 本文档提供了基于 Spring Boot、Elasticsearch 和 HBase 构建…