SpringBoot面试题

1.什么是SpringBoot

我认为SpringBoot是对于Spring的一种升级,原本我们Spring配置Bean,需要在xml配置文件上进行配置。SpringBoot能帮我们省略这些配置文件,完成自动配置。
三句话对SpringBoot进行描述
①一个jar包收集狂
②对收集好的jar包进行第二次封装,我们只需要导入启动器依赖即可
③自动配置机制

SpringBoot的思想:①约定大于配置②定制化

而且还提供了javaConfig方式来代替xml配置,让之前传统的xml配置变成了java代码的配置。

现在的springBoot其实更像是一种开发的生态环境,无论我们现在用什么框架技术实现,都会用到SpringBoot来集成。

2.SpringBoot自动装配原理

SpringBoot有一个启动类,启动类上贴有@SpringBootApplication注解,
这个注解里面贴有
@ComponentScan组件扫描器,用于扫码当前类所在的包及其子包下中符合扫描规则的类装配到IoC容器当中
@SpringBootConfiguration:等同于@Configuration注解,标记这个类是配置类
@EnableAutoConfiguration:这个注解使用了@import注解(这是Spring提供用来给IoC导入Bean的一种方式),这里面导入了
AutoConfigurationImportSelector类,他会反射创建AutoConfigurationImportSelector对象,
调用其中的getCandidateConfigurations()方法,这个方法里面调用了loadFactoryNames()方法
这里会使用SpringFactoriesLoader来加载jar包下面的
META-INF/spring.factories文件,在spring-boot-autoconfigure的jar包中写好了我们需要读取已经配置好的javaConfig类的信息,最后完成自动配置操作

3.SpringBoot的优点

①可以让我们更专注于业务开发,因为封装了大量的maven依赖为一个个start启动依赖,帮我们避免了版本冲突的问题

②而且提供了javaConfig基于java类配置的方式,替代了传统的xml配置模式,帮我们省略了大量的xml配置文件的使用

4.什么是javaConfig

他是SpringBoot的一个特有性质,提供了配置SpringIoC容器的纯java方法,它可以帮我们省略和避免xml形式的配置。

如果我们要书写一个javaConfig配置类,只需要在类上贴上@Configuration注解即可,如果想把某个类交给容器管理只需要在方法上贴上@Bean即可。

5.如何重新加载SpringBoot上的更改,而无需重新启动服务器?

使用DEV工具来实现。通过依赖关系可以节省任何更改,嵌入式tomcat将重新启动。

6.Spring Boot 中的监视器是什么?

Actuator,SpringBoot自带监控组件。它可以帮助实现对程序内部运行情况的监控。

7.如何在 Spring Boot 中禁用 Actuator(监视器) 端点安全性?

默认情况下,所有的敏感的HTTP端点都是安全的,只有具有Actuator 角色的用户才能访问它们。安全性是使用标准的HttpServletRequest.isUserInRole方法实施的。我们可以使用management.security.enabled = false 来禁用安全性。一般执行机构端点在防火墙后访问时,才建议禁用安全性

8.如何实现 Spring Boot 应用程序的安全性?

我们要使用spring-boot-starter-security依赖项,并且必须添加安全配置。配置类必须扩展WebSecurityConfigurerAdapter并覆盖其方法。

### 常见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、付费专栏及课程。

余额充值