01 Spring Boot 入门

时间:2022-07-22
本文章向大家介绍01 Spring Boot 入门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Spring Boot 入门

原理初探

主程序

@SpringBootApplication
public class SpringBoot01Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringBoot01Application.class, args);
    }

}

注解

  • @SpringBootConfiguration //springboot的配置 @Configuration //spring配置类 @Component //说明这也是spring组件 @EnableAutoConfiguration //自动配置 @AutoConfigurationPackage //自动配置包 @Import(AutoConfigurationPackages.Registrar.class) //自动配置包注册 @Import(AutoConfigurationImportSelector.class) //获取所有的配置 List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);

获取候选配置

  • protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) { List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you " + "are using a custom packaging, make sure that file is correct."); return configurations; }
  • META-INF/spring.factories:自动配置核心文件
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
//所有资源加载到配置类中

结论:SpringBoot所有自动配置在启动时扫描并加载(通过@SpringBootApplication注解实现):spring.factories存放自动加载的所有类,生效条件为:对应的启动项(start)被导入。未导入的启动项(start)不会加载。

  1. springboot在启动时,从类路径META-INF/spring.factories中获取指定值
  2. 自动配置的类导入后,便可生效,自动配置
  3. 以前需要手动装配的类,springboot自动装配了
  4. 整合j2EE,解决方案以及自动配置在spring-boot-autoconfigure-2.3.0.RELEASE.jar包下
  5. 它会吧所有需要导入的组件,以类名方式返回,这些组件就会被添加到容器;
  6. 容器中存在很多xxxAutoConfiguration文件(@Bean),这些类给容器中导入了这个场景需要的所有组件,并自动配置,@ConfigurationjavaConfig!。
  7. 有了自动配置类,不需要再进行手动编写配置文件。

SpringBoot的理解:

  • 自动装配;
  • run();
    1. 推断应用的类型,普通项目还是Web项目
    2. 查找并加载所有可用初始化器,设置到initializers(初始化器)属性中
    3. 找出所有应用程序监听器,设置到listeners属性中
    4. 推断并设置main方法的定义类,找到运行的主类

SpringBoot 配置

yaml可以直接给实体类赋值

精髓

  1. SpringBoot启动时会加载大量的自动配置类
  2. 查看需要的功能有没有在默认配置的自动配置类中
  3. 查看自动配置类中配置了哪些组件(如果组件存在其中就不需要手动配置)
  4. 给容器中自动配置类添加组件时,从properties中获取某些属性。只需要在配置文件中指定值即可
    • XXXXAutoConfigurartion自动配置类;给容器中添加组件
    • XXXXProperties封装配置文件中的相关属性

SpringBoot Web开发

静态资源处理方法:

  1. webjars(最优先)
    • url:/webjars/
    • 实际目录:classpath:/META-INF/resources/webjars/
  2. 资源查找顺序
    1. classpath:/META-INF/resources/
    2. classpath:/resources/
    3. classpath:/static/
    4. classpath:/public/

模板引擎

结论

​ 导入相应依赖即可使用thymeleaf,将相应的网页放到thymeleaf文件夹下即可

public static final String DEFAULT_PREFIX = "classpath:/templates/";

public static final String DEFAULT_SUFFIX = ".html";

在Spring Boot中,有非常多的XXXXConfiguration 帮助我们进行扩展配置,只要看见了这个东西,就要注意了