Spring Boot相关面试题

  1. 什么是SpringBoot

    1. Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
  2. 如何统一引入SpringBoot版本

    1. 继承 spring-boot-starter-parent 项目
      1. <parent>
            <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.1.2.RELEASE</version> </parent>
    2. 导入spring-boot-dependencies项目依赖
      <dependencyManagement>
        <dependencies>     <dependency> <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-dependencies</artifactId>        <version>1.5.6.RELEASE</version>        <type>pom</type>        <scope>import</scope>   </dependency> </dependencyManagement>
  3. SpringBoot优点

    1. 独立运行。
    2. 简化配置。
    3. 自动配置。
    4. 无代码生成和xml配置。
    5. 应用监控
  4. SpringBoot的核心配置文件

    1. Spring Boot的核心配置文件是 application 和 bootstrap 配置文件。
      1. application:主要用于 Spring Boot 项目的自动化配置。
      2. bootstrap: Spring Cloud 新增的启动配置文件,需要引入 spring-cloud-context 依赖后,才会进行加载。
    2. Spring Boot的配置文件格式。
      1. .properties:user.name=admin
      2. .yml:(.yml 格式不支持 @PropertySource 注解导入配置。)
        user:
          name: admin
    3. Spring Boot同时存在properties和yml的时,那个优先级高?
      1. properties文件的优先级要高于yml。
  5. SpringBoot的核心注解

    1. 启动上的注解是@SpringBootApplication,是SpringBoot的核心注解。包含了以下注解:
    2. @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
    3. @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。 
    4. @ComponentScan:Spring组件扫描。
    5.   
  6. SpringBoot的自动配置

    1. Springboot启动的时候,寻找依赖的包,然后找到META-INF/spring.factories文件中包含的jar包。
    2. 根据spring.factories配置加载AutoConfigure 类。
    3. 根据 @Conditional 等条件注解 的条件,进行自动配置并将 Bean 注入 Spring IoC 中。
  7. SpringBoot读取配置文件的方式

    1. 使用@Value注解。
      @Value("${user.name}")
      private String name;
    2. 使用@ConfigurationProperties注解,(注解在类上)
      @ConfigurationProperties(prefix="user")
      public class User {
        
          private String name;
      
          private String sex;
            
      
          public void setName(String name) {
               this.name = name;
          }
      
          
          public String getName() {
             return name;
          }

      public void setSex(String sex) {
         this.sex = sex;
      }

      public String getSex() {
      return sex;
      } }
  8. SpringBoot的热部署

    1. Spring-boot-devtools。
    2. Spring Loaded 插件,Spring Boot 2.X 后,官方宣布不再支持 Spring Loaded 插件 的更新
    3. JRebel 插件,需要付费。
  9. SpringBoot容器

    1. 内置tomcat和jetty容器。
    2. 默认是tomcat。
      1. 切换容器为jetty
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion> <!-- 去除 Tomcat -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency> <!-- 引入 Jetty -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
  10. SpringBoot支持的日志框架

    1. Logback(默认)
    2. Log4j2
    3. Log4j
    4. Java Util Logging
posted @ 2021-07-09 00:23  浮or沉  阅读(43)  评论(0编辑  收藏  举报