SpringBoot-相关问题

1、什么是 Spring Boot?为什么要用 Spring Boot?

2、SpringBoot的核心配置文件有那几个?它们的区别是什么?

  • SpringBoot的核心配置文件有application和bootstarp配置文件
  • 区别
    (1) application文件主要用于Springboot自动化配置文件。
    (2) 一些固定的不能被覆盖的属性
    (3)一些加密/解密的场景

3、SpringBoot的配置文件有哪几种格式?它们有什么区别?

  • SpringBoot的配置文件两种格式:xxx.properties文件,xxx.yml文件。
  • 两种文件的区别:
    (1) .properties 文件中的内容是key=value的格式,.yml文件中的内容是 key:value格式
    (2) yml 有空格要求,层级严格,加载属性有顺序,不支持@PropertySource注解导入配置

4、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

  • SpringBoot的核心注解是@SpringBootApplication
  • 该注解组成
    (1) @Configuration:等同于spring的XML配置文件文件;使用
    (2) @EnableAutoConfiguration:开启自动配置
    (3) @ComponentScan:组件扫描,可自动发现和装配一些Bean

5、开启 Spring Boot 特性有哪几种方式

  • 继承spring-boot-starter-parent项目
  • 导入spring-boot-dependencies项目依赖

6、Spring Boot 需要独立的容器运行吗

  • 不需要,内嵌Tomcat/Jetty服务器

7、运行 Spring Boot 有哪几种方式?

  • 运行方式的详细参考链接
  • 运行带有main方法类
  • 通过命令行 java -jar 的方式
  • 通过spring-boot-plugin的方式

8、SpringBoot自动配置原理
①、springboot启动类上有@SpringBootApplication注解,该注解是一个复合注解(派生注解),其中就有@EnableAutoConfiguration开启自动配置的注解。
在这里插入图片描述②、@EnableAutoConfiguration注解也是一个派生注解,其中的关键功能由@Import(AutoConfigurationImportSelector.class)提供。
在这里插入图片描述
③、AutoConfigurationImportSelector.class中有selectImports()方法,具体实现如下
在这里插入图片描述一路查找到 -> 关键代码处:SpringFactoriesLoader.loadFactoryNames()
在这里插入图片描述通过SpringFactoriesLoader.loadFactoryNames() 扫描所有具有META-INF/spring.factories的jar包,把扫描到的这些文件的内容包装成properties对象从properties中获取EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加在容器中。
在这里插入图片描述
至此,@EnableAutoConfiguration注解通过@SpringBootApplication被间接的标记在了Spring Boot的启动类上。在SpringApplication.run(…)的内部就会执行selectImports()方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。

精髓:

1)、SpringBoot启动会加载大量的自动配置类
2)、我们的关注点是自己需要的功能有没有SpringBoot默认写好的自动配置类;
3)、再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了)
4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值;

xxxxAutoConfigurartion:自动配置类;
给容器中添加组件
xxxxProperties:封装配置文件中相关属性;

9、Spring Boot 的目录结构是怎样的
在这里插入图片描述

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页