SpringBoot
热门题目
- 什么是 SpringBoot ?(了解)
- SpringBoot 的优缺点?(了解)
- SpringBoot 自动装配原理?(重点)
- SpringBoot 激活指定 profile 的方式?(了解)
- SpringBoot 项目内部配置文件加载顺序?(重点)
- SpringBoot 日志?(重点)
- 你知道 Undertow 吗?(了解)
- SpringBoot 的定时任务?(了解)
- SpringBoot 中 jar 包的启动器子类?(重点)
见招拆招
1、什么是 SpringBoot ?(了解)
SpringBoot 的话,它其实就是对 Spring 框架各个模块的整合,让我们能够更加方便的构建和部署 Spring 的应用嘛。对比之前来说的话,我们需要写很多的 xml 文件,进行一些繁琐的配置。SpringBoot 提供了自动配置的功能,这样我们就不用手动编写很多繁琐的配置文件了。而且现在微服务也很流行嘛,SpringBoot 直接打成一个 jar 包,只要服务器上装了 JDK 或者 JRE 的话,就能够直接运行,非常的方便。
2、SpringBoot 的优缺点?(了解)
本质上第一题就是介绍优点的,这里说一下缺点,两道题可以互补:
任何事物其实都具有两面性,虽然 SpringBoot 的出现提高了开发效率,但是也带来了一些副作用,比如说启动预热时间较长,启动的时候 CPU 和 内存 飙升的问题。而且在平时开发的时候,为了方便,总是会去使用各种各样的 starter ,都是别人封装好的,对底层的一些实现细节就不是太关心了,可能会带来一些莫名其妙的 bug ,难以解决等。
3、SpringBoot 自动装配原理?(重点)
主要依赖与 @EnableAutoConfiguration 注解和 spring.factories 文件,还有一些其他的条件注解。@SpringBootApplication 是一个组合注解嘛,它里面就包含了 @EnableAutoConfiguration 注解,一般不需要显示的添加。SpringBoot 使用 spring.factories 文件来列出所有的自动配置类,这个文件位于每个自动配置模块的META-INF
目录下。Spring Boot 在启动时会扫描这些文件,并加载其中列出的自动配置类。
这里就简单说一下自动配置的工作流程吧:
首先是扫描spring.factories
文件,找出所有的自动配置类并且进行加载。加载的时候,如果配置类上有条件注解的话,并且所有的条件都被满足话,才会进行加载工作。最后就是放入 Spring 容器中,注册成对应的 Bean 。
4、SpringBoot 激活指定 profile 的方式?(了解)
其实这个方式还是很多的,我这里说一下我常用的吧,
第一种方式就是,在 application.yaml 或者 application.properties 文件中去指定;
第二种方式就是,在启动应用的时候,通过命令行参数去激活。
我常用的就这两种,其他的还可以通过手动编程或者注解去实现。
5、SpringBoot 项目内部配置文件加载顺序?(重点)
第一优先级的是,bootstrap.yaml 或者 bootstrap.properties,它们最先被加载,且配置内容不会被后续的配置覆盖掉。
第二就是,项目根目录下的配置文件。
第三就是,resources
目录下的配置文件,像什么 application.yaml 或者 applicaion.properties,一般都是放在这里嘛。
最后嘛,就是代码文件中的 @PropertySource注解 了。
6、SpringBoot 日志?(重点)
SpringBoot 有自己的日志系统,它是基于 slf4j 和 logback 的组合。slf4j 提供简单的日志记录 API ,Logback 则是一个强大的日志实现。两者的关系就相当于接口和实现类。SpringBoot 内嵌了一个logback-spring.xml
,如果我们没有指定的话,就是使用这个默认的。当然,我们可以在配置文件中进行简单的日志配置。如果有复杂的日志需求的话,可以在resources
目录下创建自己的logback-spring.xml
文件。
7、你知道 Undertow 吗?(了解)
这个真的是了解一下了,具体参加这篇博客:https://blog.csdn.net/Aaaaaaatwl/article/details/142054694
我们都知道 SpringBoot 内嵌了一个 Tomcat,相当于 web 能力是 Tomcat 提供的,但是我们也可以对底层的服务器进行更换的。
8、SpringBoot 的定时任务?(了解)
通过 @EnableScheduling 注解和 @Scheduled ,在加上 corn 表达式实现。
(大概率不会问的)
9、SpringBoot 中 jar 包的启动器子类?(重点)
在 Spring Boot 中,JAR 包的启动器子类主要用于加载和启动 Spring Boot 应用程序。Spring Boot 提供了多种启动器子类来支持不同类型的应用程序和打包方式。有 JarLauncher
、WarLauncher
以及PropertiesLauncher
,JarLauncher 是默认的启动子类,它通过加载和执行 jar 包中的主类来启动程序。WarLauncher 其实就是启动 war 包里面的嘛。PropertiesLauncher 通过外部的配置文件来设置启动参数。当然,我们也可以自定义启动器,执行一些自定义逻辑。
总结
SpringBoot 作为开箱即用的东西,许多时候会使用就行了,无须关注太多东西。
2025/01/12
writeBy kaiven