01---java面试八股文——springboot---10题

01-你是怎么理解Spring Boot 的约定优于配置

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

02-聊一下Spring Boot 中自动装配机制的原理

  1. 自动装配,简单来说就是自动把第三方组件的 Bean 装载到 Spring IOC 器里面,不需要开发人员再去写 Bean 的装配配置。
  2. 在 Spring Boot 应用里面,只需要在启动类加上@SpringBootApplication 注解就可以实现自动装配。@SpringBootApplication 是一个复合注解,真正实现自动装配的注解是@EnableAutoConfiguration。
  3. 自动装配的实现主要依靠三个核心关键技术。
      1. 引入 Starter 启动依赖组件的时候,这个组件里面必须包含@Configuration 配置类,在这个配置类里面通过@Bean 注解声明需要装配到 IOC 容器的 Bean 对象。
      1. 这个配置类是放在第三方的 jar 包里面,然后通过 SpringBoot 中的约定优于配置思想,把这个配置类的全路径放在 classpath:META-INF/spring.factories 文件中。这样SpringBoot 就可以知道第三方 jar 包里面的配置类的位置,这个步骤主要是用到了 Spring 里面的SpringFactoriesLoader来完成的。
      1. SpringBoot 拿到第三方 jar 包里面声明的配置类以后,再通过 Spring 提供的ImportSelector接口,实现对这些配置类的动态加载。
  4. 在我看来,SpringBoot 是约定优于配置这一理念下的产物,所以在很多的地方,都会看到这类的思想。它的出现,让开发人员更加聚焦在了业务代码的编写上ÿ

你可能感兴趣的:(Java面试刷题,java,面试,spring,boot)