SpringBoot面试深度解析

需积分: 3 1 下载量 197 浏览量 更新于2024-08-03 收藏 506KB PDF 举报
"这份PDF文件包含了关于Spring Boot的最新面试题集,涵盖了Spring Boot的基础、配置、安全、监视器、整合第三方项目以及其他相关主题。" # Spring Boot面试知识点详解 ## 1. Spring Boot概述 Spring Boot是Spring框架的一个子项目,设计目标是简化Spring应用的初始搭建以及开发过程。它通过提供预配置的启动器(starters)和自动配置功能,使得创建独立运行的Spring应用变得极其简单。 ## 2. Spring Boot的优点 - 快速起步:通过内嵌的Servlet容器(如Tomcat或Jetty),无需额外配置即可运行。 - 减少样板代码:通过自动配置,减少了大量XML配置。 - 开箱即用:包含许多默认配置,如数据源、缓存、日志等。 - 模块化:通过starters方便地引入所需模块。 - 零配置:尽可能地减少手动配置,但同时也允许自定义配置。 ## 3. Spring Boot核心注解 - `@SpringBootApplication` 是Spring Boot的核心注解,结合了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`三个注解。 ## 4. JavaConfig与自动配置 - JavaConfig:Spring Boot使用Java类替代XML配置,提高可读性和可维护性。 - 自动配置原理:基于`@Conditional`注解,根据类路径中的存在情况、环境变量、属性值等条件,自动配置Bean。 ## 5. 配置加载顺序 - `application.properties`或`application.yml`文件,根据`spring.profiles.active`指定的profile加载对应的配置。 - `bootstrap.properties`或`bootstrap.yml`用于初始化配置,如连接配置服务器。 - 启动时的命令行参数。 - JVM系统属性。 - 环境变量。 - 默认值。 ## 6. YAML配置 - YAML比properties更易读,支持层级结构。 - YAML的优势在于其清晰的语法和对复杂数据结构的良好支持。 ## 7. Spring Profiles - Spring Profiles用于在不同环境中切换配置。 - 可通过`spring.profiles.active`属性激活特定Profile。 ## 8. 端口配置 - 使用`server.port`属性设置自定义端口运行Spring Boot应用。 ## 9. 安全性 - 可通过`@EnableWebSecurity`启用Spring Security进行安全控制。 - Spring Security与Shiro各有优缺点,前者功能强大但学习曲线较陡峭,后者轻量级且易于上手。 ## 10. 跨域问题 - 使用`@CrossOrigin`注解或全局过滤器处理跨域请求。 ## 11. 监视器 - Spring Boot Actuator提供了健康检查、审计、指标等监控功能。 - 通过配置`management.endpoints.web.exposure.include`禁用Actuator端点安全性。 ## 12. 第三方项目整合 - WebSockets用于实时通信。 - Spring Data简化数据访问,支持多种数据库。 - Spring Batch用于批处理操作。 - FreeMarker是模板引擎,用于生成动态HTML。 - SpringBoot可与ActiveMQ集成,实现消息队列功能。 - Apache Kafka是分布式流处理平台。 - Swagger用于API文档的生成和管理。 ## 13. 热部署 - 使用Spring Loaded或JRebel实现热部署,修改后无需重启即可看到变更。 - `spring-boot-devtools`模块也可实现自动重启。 ## 14. Maven依赖 - Starters是Maven依赖的集合,如`spring-boot-starter-web`用于web开发。 - `spring-boot-starter-parent`作为父POM,提供版本管理和默认配置。 ## 15. Jar区别 - Spring Boot的jar是可执行的,包含内嵌的Servlet容器。 - 普通jar通常不包含运行时依赖。 ## 16. 运行方式 - 直接运行主类。 - 打包成jar后使用`java -jar`运行。 - 使用IDEA或Maven插件运行。 ## 17. 无需独立容器 - Spring Boot应用内置了Servlet容器,可直接运行,无需外部容器。 ## 18. 特性开启 - 通过`@Enable*`注解开启特性,如`@EnableCaching`开启缓存。 - 配置文件中设置属性来开启或关闭特性。 ## 19. 异常处理 - 自定义`@ControllerAdvice`处理全局异常。 - 使用`@ExceptionHandler`处理特定异常。 ## 20. 分页排序 - 使用Spring Data JPA的`Pageable`接口实现分页查询。 - `Sort`对象用于排序。 ## 21. Session共享 - 在微服务中,可以使用Redis、 Hazelcast 或共享Cookie等实现Session共享。 ## 22. 定时任务 - 使用`@Scheduled`注解创建定时任务。 - 配合`@EnableScheduling`开启调度任务。 这些知识点涵盖了Spring Boot的各个方面,对于准备面试或深入理解Spring Boot的开发者都非常有帮助。