"Spring最新面试题及答案整理,汇总版"
### Spring面试题详解
#### 1、Spring配置文件是什么?
Spring配置文件通常是XML文件,它定义了应用中的bean及其依赖关系。这些bean代表了应用程序中的对象,XML配置文件用于描述它们的配置细节,如初始化参数、属性注入等。然而,XML配置文件在大型项目中可能变得复杂且难以管理,因此Spring框架引入了基于Java的配置和注解驱动的配置方式,以简化配置并提高可读性。
#### 2、保护Spring Boot应用的方法
1. **使用HTTPS**:在生产环境中,应强制使用HTTPS协议,以确保数据传输的安全性。
2. **依赖关系检查**:工具如Snyk可以帮助检查并修复应用中的安全漏洞。
3. **保持更新**:定期更新Spring Boot和其他依赖库至最新版本,以获取最新的安全补丁。
4. **启用CSRF保护**:防止跨站请求伪造攻击,Spring Boot默认已启用。
5. **内容安全策略(CSP)**:设置CSP可以有效防止XSS攻击,限制浏览器只接受来自安全来源的内容。
#### 3、`@RestController`与`@Controller`的区别
两者都是Spring MVC的注解,用于处理HTTP请求。`@Controller`主要用于创建控制器,而`@RestController`是`@Controller`和`@ResponseBody`的组合,意味着它会自动将响应体转换为JSON或其他媒体类型返回给客户端。
#### 4、启用/禁用执行器
Spring Boot的执行器(Actuator)提供了监控和管理应用的端点。要启用,需在Maven或Gradle的依赖中加入`spring-boot-starter-actuator`。反之,如果不添加这个依赖,执行器功能就不会被启用。
#### 5、`@LoadBalanced`注解的作用
`@LoadBalanced`注解是用于实现客户端负载均衡的,它可以自动将请求路由到不同的服务器实例,常用于微服务架构中,配合 Ribbon 或者 Spring Cloud LoadBalancer 使用。
#### 6、Spring Boot的核心配置文件
Spring Boot有两个核心配置文件:`application.properties`和`bootstrap.properties`。
- `application.properties`:主要用来进行Spring Boot的常规配置,如数据库连接、服务器端口等,它支持通过命令行参数或环境变量覆盖。
- `bootstrap.properties`:此文件的加载优先级高于`application.properties`,主要用于早期应用初始化,例如连接Spring Cloud Config Server,加载外部配置,以及处理加密解密的场景。它的配置通常在应用启动时就需要,且不易被覆盖。
#### 7、Spring Boot的两“自动”
Spring Boot的核心特性之一是“自动配置”(Auto-configuration),它根据项目中的依赖自动配置相关bean。另一个是“起步依赖”(Starter),这些预设的Maven或Gradle模块简化了添加新功能的过程,比如`spring-boot-starter-web`用于添加Web支持,`spring-boot-starter-data-jpa`用于JPA数据访问。
以上就是Spring面试中的一些常见问题和答案,涵盖了Spring配置、安全、核心特性和组件的使用等方面,有助于理解和准备面试。