Java面试之springboot常见面试题

97 阅读2分钟

1. 什么是Spring Boot?

Spring Boot是一个开源的Java框架,旨在简化Spring应用的初始搭建以及开发过程。它通过提供默认配置和自动配置等功能,使开发者能够快速搭建Spring应用,并专注于业务功能的开发,而无需过多关注配置和底层细节。

2. Spring Boot有哪些优势?

简化配置:通过约定大于配置的方式,Spring Boot提供了大量的默认配置,减少了开发者手动配置的工作量。 快速开发:内置了众多实用的starter,可以快速添加所需的依赖,使开发过程更加迅速。 内嵌服务器:无需额外配置和部署Web服务器,Spring Boot内置了Tomcat、Jetty等服务器,可以直接运行应用。 监控和管理:提供了Actuator模块,可以方便地监控和管理应用的运行状态。 云部署支持:Spring Boot天生为云而生,可以与多种云服务进行集成,方便地进行云部署和云管理。

3. 什么是JavaConfig?

JavaConfig是Spring社区提供的一种使用纯Java代码来配置Spring IoC容器的方式。它避免了使用XML配置文件,使得配置更加简洁、直观和易于维护。JavaConfig通过注解和Java类来定义Bean的创建和依赖注入关系,实现了与XML配置相同的功能。

4. Spring Boot的自动配置是如何实现的?

Spring Boot的自动配置主要依赖于@EnableAutoConfiguration注解和spring.factories文件。当Spring Boot启动时,@EnableAutoConfiguration注解会触发自动配置过程。Spring Boot会读取META-INF/spring.factories文件中的配置信息,并根据这些信息加载并注册自动配置类。每个自动配置类都会根据条件注解(如@ConditionalOnClass、@ConditionalOnProperty等)来判断是否满足自动配置的条件,如果满足则进行自动配置。

5. Spring Boot支持哪些配置文件的格式?默认使用哪种?

Spring Boot支持properties和yml(或yaml)两种格式的配置文件。默认情况下,Spring Boot会按照以下顺序加载配置文件(优先级从高到低):

1、命令行参数 2、来自java:comp/env的JNDI属性 3、Java系统属性(System.getProperties()) 4、操作系统环境变量 5、random.*属性源,用于注入随机值(仅用于random属性) 6、应用外部的application.properties或application.yml文件(位于spring.config.location指定的目录) 7、应用内部的application.properties或application.yml文件(位于类路径的根目录或config子目录) 8、在@Configuration类上使用@PropertySource注解指定的属性源 9、默认属性(使用SpringApplication.setDefaultProperties指定)

其中,application.properties和application.yml是最常用的配置文件格式。在默认情况下,如果同时存在application.properties和application.yml文件,Spring Boot会优先加载application.properties文件。但是,如果application.yml文件的命名更加具体(如application-dev.yml),则可以通过激活不同的配置文件来加载不同的配置。