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 面试题及相关常见问题 #### 什么是 Spring BootSpring BootSpring 开源组织下的子项目,旨在提供一种更简单的方式来构建独立运行的应用程序。它通过自动配置机制减少了繁琐的手动配置工作,并集成了多种常用的开发工具和框架[^2]。 #### Spring Boot 的主要特点是什么? Spring Boot 提供了一种一站式的解决方案来简化 Spring 的使用难度。它的核心优势在于减少复杂配置的工作量,同时提供了丰富的启动器(Starters),使开发者能够更快地上手并完成项目的搭建[^2]。 #### 如何将传统 Spring Framework 项目迁移到 Spring Boot? 尽管有人认为迁移过程可能较为困难且耗时,但实际上可以通过继承 `spring-boot-starter-parent` 或者引入 `spring-boot-dependencies` 来实现兼容性支持。这种方式允许逐步替换原有组件而不必一次性重构整个项目结构[^3]。 #### Spring BootSpring Cloud 的区别在哪里? 虽然两者都隶属于 Spring 生态体系的一部分,但是它们的目标领域有所不同: - **Spring Boot** 主要关注单体应用以及微服务的基础架构建设; - 而 **Spring Cloud** 则专注于分布式系统的治理和服务间通信等问题解决方法论上的扩展功能模块集合[^1]。 #### 启用 Spring Boot 特性的途径有哪些? 启用 Spring Boot 功能通常有以下几种方式: 1. 继承官方推荐父级 POM 文件——即设置 Maven 构建文件中的 `<parent>` 标签指向 `spring-boot-starter-parent`; 2. 手动添加依赖管理部分到自定义 Parent 中并通过声明形式引用 `spring-boot-dependencies` 工程作为 BOM (Bill Of Materials)[^3]。 以下是简单的代码示例展示如何创建一个基本的 Spring Boot 应用程序: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值