Spring Boot面试题
1、Spring Boot常用的starter有哪些?(高频)
1、spring-boot-starter-web (嵌入tomcat和web开发需要servlet与jsp支持)
2、spring-boot-starter-data-elasticsearch (es支持)
3、spring-boot-starter-data-redis (redis支持)
4、spring-boot-starter-amqp(消息队列支持)
5、spring-boot-starter-data-mongodb (mongodb的支持)
6、mybatis-plus-boot-starter(mybatis plus的支持)
7、mybatis-spring-boot-starter(mybatis的支持)
2、Spring Boot的配置文件有哪几种格式?(高频)
Spring Boot支持两种格式的配置文件:
1、application.properties
2、application.yml
在实际的项目开发一般的都是使用配置中心管理项目中的配置信息,常见的配置中心:Spring Cloud Config、Nacos
3、如何自定义Spring Boot应用程序的端口号?
方式一:在application.properties或者application.yml文件中添加server.port配置项指定端口
方式二:在启动spring boot项目的时候通过**-Dserver.port**参数指定项目的端口号
方式三:通过WebServerFactoryCustomizer设置端口号,如下所示
4、Spring Boot有哪几种读取配置的方式?(高频)
Spring Boot 可以通过
1、@Value
2、Environment接口
3、@ConfigurationProperties
5、Spring Boot项目的自动化配置原理是什么?(高频)
在Spring Boot项目中有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan其中@EnableAutoConfiguration是实现自动化配置的核心注解。该注解的源码如下所示:
该注解通过@Import注解导入AutoConfigurationImportSelector,这个类实现了一个导入器接口ImportSelector。在该接口中存在一个方法selectImports,如下所示:
该方法的返回值是一个数组,数组中存储的就是要被导入到spring容器中的类的全类名。在AutoConfigurationImportSelector类中重写了这个方法,该方法内部就是读取了项目的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。
如下所示:
在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。
总结:在项目启动的时候,spring boot框架会自动读取META-INF/spring.factories配置文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration所配置的配置类,然后将其中所定义的bean根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。