SpringBoot面试题

SpringBoot简化了Spring的复杂配置,提供独立运行的项目和自动配置功能。它包含SpringBootConfiguration、EnabledAutoConfiguration和ComponentScan核心注解,支持Log4j2和Logback日志框架。通过starters轻松管理依赖,如spring-boot-starter-jpa。SpringBoot还提供应用监控,如健康检查。

1、什么是SpringBoot:

SpringBoot是Spring旗下开源子项目,提供了一站式解决方案,简化了使用Spring的难度,免去了繁杂的配置文件

2、SpringBoot优点:

  • 快速构建项目,远离Spring的复杂配置
  • 项目可独立运行,无需依赖外部容器
  • 提供运行时的应用监控

3、Spring Boot 的核心注解是哪个:

  • @SpringBootApplication
  • SpringBootApplication包含了三个注解,SpringBootConfiguration(实现配置文件的功能)、EnabledAutoConfiguration(打开自动配置)、ComponentScan(Spring注解扫描)

4、SpringBoot核心功能:

  • 独立运行的 Spring 项目
  • 内嵌 Servlet 容器
  • 提供 starter 简化 Maven 配置
  • 自动配置 Spring
  • 准生产的应用监控
  • 无代码生成和 xml 配置

5、SpringBoot Starters:

  • starters可以理解为启动器,当你想要使用某项功能时,比如Spring jpa,那么直接引入jpa的starter就可以了,不需要自己去引入对应的maven依赖。
  • SpringBoot官方的start是spring-boot-starter开头的,非Spring的start如mybatis-spring-boot-starter。

6、SpringBoot日志:

SpringBoot支持Log4j2,LockBack(默认日志框架)作为日志框架,也可以通过logback-spring.xml来配置日志输出项

### 常见Spring Boot面试题及答案 #### 1. 什么是Spring BootSpring Boot 是一个基于 Spring 框架的开源项目,旨在简化新 Spring 应用的初始搭建和开发。它通过自动配置和起步依赖减少了配置的复杂性,使得开发者可以快速创建独立的、生产级的应用程序[^1]。 #### 2. Spring Boot的核心特性有哪些? - **自动配置**:根据类路径上的依赖项自动配置 Spring 应用程序。 - **起步依赖**:提供简化的依赖管理,减少 Maven 或 Gradle 配置。 - **内嵌的服务器**:支持内嵌的 Tomcat、Jetty 等服务器,无需单独部署 WAR 文件。 - **外部化配置**:支持通过 `application.properties` 或 `application.yml` 文件进行配置。 - **Actuator**:提供生产就绪的功能,如健康检查、度量指标等。 #### 3. 什么是Spring Boot Starter? Spring Boot Starter 是一种特殊的依赖项,它封装了特定功能所需的依赖库和自动配置。通过引入 Starter,开发者可以快速集成常用功能,而无需手动管理多个依赖。例如,`spring-boot-starter-web` 提供了构建 Web 应用所需的所有依赖[^3]。 #### 4. 如何禁用Spring Boot的自动配置? 可以通过在主应用程序类上使用 `@SpringBootApplication` 注解的 `exclude` 属性来禁用特定的自动配置类。例如: ```java @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` #### 5. 什么是条件注解?列举几个常见的条件注解。 条件注解用于控制某些配置是否生效,根据特定条件决定是否创建 Bean。常见的条件注解包括: - `@ConditionalOnClass`:当指定的类存在于类路径中时,配置生效。 - `@ConditionalOnMissingClass`:当指定的类不存在于类路径中时,配置生效。 - `@ConditionalOnBean`:当指定的 Bean 存在于 Spring 容器中时,配置生效。 - `@ConditionalOnMissingBean`:当指定的 Bean 不存在于 Spring 容器中时,配置生效[^2]。 #### 6. 如何自定义Spring Boot的Starter? 创建自定义 Starter 通常包括以下步骤: 1. **定义自动配置类**:使用 `@Configuration` 注解定义配置类,并通过条件注解控制配置的生效条件。 2. **创建配置属性类**:定义一个 POJO 类来映射配置文件中的属性。 3. **创建 `spring.factories` 文件**:在 `src/main/resources/META-INF/spring.factories` 文件中注册自动配置类。 4. **发布到 Maven 仓库**:将自定义 Starter 发布到 Maven 仓库,供其他项目使用。 #### 7. Spring Boot中的Actuator是什么?如何启用它? Actuator 是 Spring Boot 提供的一个模块,用于监控和管理应用程序。它提供了许多端点(如 `/health`、`/info`、`/metrics` 等),可以帮助开发者了解应用的运行状态。要启用 Actuator,只需在项目中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` 然后可以通过 `application.properties` 或 `application.yml` 配置端点的行为。 #### 8. 如何在Spring Boot中实现国际化? Spring Boot 支持通过 `MessageSource` 接口实现国际化。具体步骤包括: 1. **创建消息属性文件**:在 `src/main/resources` 目录下创建多个语言的属性文件,如 `messages_en.properties` 和 `messages_zh.properties`。 2. **配置 `MessageSource` Bean**:在配置类中定义 `MessageSource` Bean,并指定基础名称。 3. **使用 `@Transactional` 注解**:在需要国际化的地方注入 `MessageSource` 并调用其方法获取对应语言的消息。 #### 9. 如何在Spring Boot中实现缓存? Spring Boot 提供了对多种缓存技术的支持,如 Caffeine、EhCache、Redis 等。要启用缓存,首先需要添加相应的依赖,然后使用 `@EnableCaching` 注解启用缓存功能,并在服务层使用 `@Cacheable`、`@CachePut` 和 `@CacheEvict` 等注解来管理缓存数据[^1]。 #### 10. Spring Boot中的Profiles是什么?如何使用? Profiles 用于区分不同的环境配置,如开发环境、测试环境和生产环境。可以通过 `application-{profile}.properties` 或 `application-{profile}.yml` 文件来定义不同环境的配置。在运行应用时,可以通过设置 `spring.profiles.active` 属性来指定当前激活的 Profile[^1]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值