2020春Boot面试精华:一站式Java框架与微服务安全实践

需积分: 2 0 下载量 187 浏览量 更新于2024-08-05 收藏 533KB PDF 举报
SpringBoot面试题(2020最新版)是一份全面整理的面试题集合,针对2020年技术栈的更新趋势,旨在帮助求职者准备一线大厂的面试。SpringBoot是一个重要的Java框架,由Spring团队开发,其核心理念是简化新项目的初始搭建,提供零配置、快速开发的能力。 SpringBoot的优点包括: 1. 快速入门:通过约定优于配置,减少了开发者在基础设施方面的配置工作。 2. 零配置:SpringBoot默认提供了许多内置的配置,如Tomcat、MyBatis等,降低了项目初始化的复杂度。 3. 扩展性强:支持自动配置和插件机制,方便整合第三方库和工具。 4. 简化依赖管理:通过Maven或Gradle的starter依赖,自动化处理版本管理和依赖引入。 SpringBoot的核心注解主要有以下几个: 1. `@SpringBootApplication`:这是一个组合注解,包含了`@SpringBootConfiguration`(配置类)、`@EnableAutoConfiguration`(自动配置启用)和`@ComponentScan`(扫描组件)。 2. `@RestController`:用于标记RESTful控制器,简化HTTP接口的创建。 3. `@RequestMapping`:用于定义HTTP请求映射。 配置方面,JavaConfig是Spring Boot提供的一种替代XML配置的方式,更倾向于面向切面编程,代码更清晰。SpringBoot的自动配置原理基于Java的反射机制,它会根据应用的依赖关系自动装配相关的bean。配置加载顺序遵循一定的规则,如应用属性、环境变量、内置配置、用户自定义配置等。 YAML是一种简洁的配置文件格式,相比XML更易读,且支持数据层次结构清晰。SpringBoot可以使用YAML进行配置,但并非强制,XML配置仍然可用,但不推荐。 SpringBoot的核心配置文件主要包括`bootstrap.properties`和`application.properties`。`bootstrap.properties`通常用于外部环境变量,如Docker环境,而`application.properties`则包含应用的基本配置,两者合并后作为Spring Boot应用的最终配置源。 `SpringProfiles`用于在不同环境或阶段切换不同的配置,例如开发、测试和生产环境。 运行SpringBoot时,可以通过指定`--server.port`命令行参数来在自定义端口上运行应用。安全性方面,SpringBoot提供内置的Spring Security和Shiro的集成选项,各有优缺点,Spring Security功能更强大,而Shiro更为轻量级。 跨域问题可以通过添加CORS过滤器或者使用Spring Security的`@CrossOrigin`注解来解决。CSRF(跨站请求伪造)攻击是网络安全问题,需确保在敏感操作中添加CSRF令牌验证。 Spring Boot的监视器,如Actuator,提供了健康检查、日志查看、性能监控等功能。Actuator的安全性可以通过配置文件或`management.endpoints.web.exposure.include`设置来控制。 整合第三方项目如WebSockets(全双工通信)、SpringData(数据访问框架)、SpringBatch(批处理作业)、FreeMarker模板(视图引擎)、ActiveMQ(消息队列)、Apache Kafka(分布式消息系统)和Swagger(API文档生成器)等,SpringBoot都提供了方便的集成方式。 Spring Boot项目可以使用`spring-boot-devtools`重新加载更改,实现热部署。`startermaven`依赖项是用于简化项目构建的,例如Spring Boot starter依赖会自动处理版本管理。 `spring-boot-starter-parent`是一个父POM项目,提供了一套默认依赖和构建配置,便于子项目继承。Spring Boot打包的jar与普通jar的区别在于,前者包含了运行环境所需的自动配置类和依赖。 运行SpringBoot的方式有命令行启动、IDE内置服务器启动和部署到生产环境服务器等。SpringBoot并不需要独立的容器运行,通常能在标准的JVM环境中运行。 开启SpringBoot特性的常见方式有添加starter依赖、配置文件调整或使用@Enable注解。异常处理通常通过@ControllerAdvice、@ExceptionHandler和全局异常处理器实现;分页和排序则依赖于Spring Data的Querydsl、JPA或MyBatis等持久层技术;在微服务架构中,session共享可以通过Redis、JWT等方式实现。 定时任务在Spring Boot中可以利用Quartz或Spring Task等第三方库,也可以使用Spring Boot的定时任务功能`@Scheduled`注解。最后,前后端分离时,维护接口文档通常借助API管理工具如Swagger,结合SpringBoot的Rest Docs功能,方便生成和更新文档。