SpringBoot 2023面试深度解析,附全面答案

需积分: 5 0 下载量 53 浏览量 更新于2024-08-03 收藏 6KB MD 举报
"SpringBoot最新2023年面试题大汇总,附答案" ### SpringBoot自动配置的原理 SpringBoot的自动配置是基于`@EnableAutoConfiguration`注解实现的。当SpringBoot应用启动时,这个注解会引导Spring Boot去扫描`META-INF/spring.factories`配置文件中列出的所有自动配置类。这些类通常以`AutoConfiguration`为后缀,它们实际上是Spring的Java配置类,用于设置应用的默认配置。自动配置类中经常使用`@EnableConfigurationProperties`注解,它关联了以`Properties`结尾的类,例如`ServerProperties`。这些`Properties`类通过`@ConfigurationProperties`注解将全局配置文件(如`application.properties`或`application.yml`)中的属性映射到对应的Bean属性,实现了配置的自动绑定。 ### SpringBoot配置加载顺序 SpringBoot加载配置的顺序如下: 1. `properties`文件:包括`application.properties`或`application.yml`。 2. YAML文件:如果同时存在`properties`和`yml`,`yml`的配置会覆盖`properties`。 3. 系统环境变量:这些变量会覆盖配置文件中的值。 4. 命令行参数:这是最高优先级,可以覆盖所有其他来源的配置。 ### SpringBoot初始化环境变量流程 1. 调用`prepareEnvironment`方法,设置环境变量。 2. 接下来执行`getOrCreateEnvironment`,创建或获取环境对象,初始化系统环境变量。 3. `configureEnvironment`方法用于初始化命令行参数。 4. `environmentPrepared`方法在环境准备完成时被调用,它会触发`onApplicationEnvironmentPreparedEvent`事件,进而调用`postProcessEnvironment`方法,加载`yml`和`properties`配置。 ### 运行SpringBoot的方式 1. 打包成JAR或WAR文件,然后通过命令行或者部署到服务器容器中运行。 2. 使用Maven或Gradle插件直接运行应用,无需打包。 3. 直接在开发环境中,通过IDE执行主类的`main`方法运行应用。 ### SpringBoot中解决跨域问题 SpringBoot支持在后端处理跨域问题,通常通过以下两种方式: 1. 添加CORS过滤器:在SpringBoot应用中配置CORS(Cross-Origin Resource Sharing)过滤器,允许特定的跨域请求。可以通过`WebMvcConfigurer`接口的`addCorsMappings`方法来添加CORS配置。 2. 使用`@CrossOrigin`注解:在控制器或具体的方法上添加`@CrossOrigin`注解,指定允许的源、请求方法等跨域参数。 以上就是对SpringBoot面试题的部分解答,涵盖了自动配置原理、配置加载顺序、环境变量初始化、运行方式以及跨域解决方案等核心知识点。这些内容对于理解SpringBoot的工作机制和日常开发非常有帮助。