面试题 - Spring Boot相关问题

1. Spring Boot的约定优于配置,如何理解?

从4个方面回答:

  1. 约定优于配置是一种软件设计规范,它的核心思想是减少开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。
  2. Spring Boot就是约定优于配置这一理念下的产物,他类似于Spring框架下的一个脚手架,通过SpringBoot,我们可以快速开发基于Spring生态下的应用程序。
  3. 基于传统的Spring框架开发web应用的时候我们需要做很多与业务开发无关并且只需要做一次的配置,例如:管理jar包依赖、web.xml维护、Dispatch-Servlet.xml配置项维护、应用部署到Web容器、第三方组件集成到Spring IOC容器中的配置项维护。而在Spring Boot中,我们不需要再去做这些繁琐的配置,Spring Boot已经自动帮我们完成了,这就是约定优于配置思想的体现。
  4. Spring Boot约定优于配置的体现还有很多,例如:第一,Spring Boot Starter启动依赖,它能帮我们管理所有jar包版本;第二,如果当代青年的应用依赖了SpringMVC相关的jar,那么Spring Boot会自动内置Tomcat容器来运行web应用,我们不需要单独做应用部署;第三,Spring Boot的自动装配机制的实现,通过扫描约定路径下的spring.factories文件来识别配置类,实现Bean的自动装配;第四,Spring Boot会默认加载resource目录下的application.properties文件。
    总的来说,约定优于配置是一个比较常见的软件设计思想,它的核心本质都是为了更高时效以及更便捷的实现软件系统的开发和维护。

2. 如何理解Spring Boot中的Starter?

Starter是Spring Boot的四大核心功能特性之一,除此之外,Spring Boot还有自动装配、Actuator监控等特性。
Spring Boot里面的这些特性,都是为了让开发者在开发基于Spring生态下的企业级应用是,只需要关系业务逻辑,减少对配置和外部环境的依赖。
其中,Starter是启动依赖,它的主要作用有以下几个:
第一,Starter组件以功能为维度,来维护对应jar包的版本依赖,是的开发者可以不需要关系这些版本冲突这种容易出错的细节。
第二,Starter组件会把对应功能的所有jar包依赖全部导入进来,避免了开发者自己去引入依赖带来的麻烦。
第三,Starter内部集成了自动装配机制,在程序中依赖对应的Starter组件后,这个组件自动会集成到Spring生态下,并且对相关Bean的管理也是基于自动装配机制完成的。
第四,依赖Starter组件后,这些组件对应功能需要有维护的外部化配置会自动集成到Spring Boot里,我们只需要在application.properties文件里面进行维护就可以了。例如:Redis这个Starter,只需要在application.properties文件添加Redis的连接信息就可以直接使用了。
Starter组件完美体现了约定优于配置的理念。
另外,Spring Boot官方提供了很多的Starter组件,比如Redis、JPA、MongoDB等,但是官方并不一定维护所有的中间件的Starter,所以对于不存在的Starter,第三方组件一般会自己去维护一个。
官方维护的Starter以spring-boot-starter作为开头,第三方的Starter则以spring-boot-starter作为结尾。这也是一种约定优于配置的体现。

3. Spring Boot中自动装配机制的原理是什么?

自动装配,简单来说就是自动把第三方组件的Bean装载到Spring IOC容器里,不需要开发人员再去写Bean的装配配置。
在Spring Boot应用里面,只需要在启动类上加上@SpringBootApplication注解就可以实现自动装配,该注解是一个复合注解,真正实现自动装配的注解是@EnableAutoConfiguration。
自动装配实现主要是靠是三个核心技术:第一,引入Starter启动依赖组件的时候,这个组件里面必须包含@Configuration配置类,在这个配置类里面通过@Bean注解声明需要装配到IOC容器的Bean对象。第二,这个配置是放在第三方的jar包里面,然后通过Spring Boot中的约定优于配置思想,把这个配置类的全路径放在classpath:/META-INF/spring.factories文件中。这样Spring Boot就可以知道第三方jar包里面的配置类的位置,这个步骤主要是用到了Spring里面的SpringFactoriesLoader来完成的。第三,Spring Boot拿到所有第三方jar包里声明的配置类以后,再通过Spring提供的ImportSelector接口,实现对这些配置类的动态加载。
从而完成的那个自动装配这一过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值