SpringBoot快速入门

Posted linklate2022

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot快速入门相关的知识,希望对你有一定的参考价值。

2、SpringBoot原理分析

2.1、SpringBoot自动配置

  1. Condition

    Condition 是在Spring 4.0 增加的条件判断功能,通过这个可以功能可以实现选择性的创建 Bean 操作

    自定义条件:

    1. 定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判断,返回
      boolean值 。 matches 方法两个参数:

      • context:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等。
      • metadata:元数据对象,用于获取注解属性。
    2. 判断条件: 在初始化Bean时,使用 @Conditional(条件类.class)注解

    SpringBoot 提供的常用条件注解:

    • ConditionalOnProperty: 判断配置文件中是否有对应属性和值才初始化Bean
    • ConditionalOnClass: 判断环境中是否有对应字节码文件才初始化Bean
    • ConditionalOnMissingBean: 判断环境中没有对应Bean才初始化Bean
  2. 切换内置web服务器
    SpringBoot的web环境中默认使用tomcat作为内置服务器,其实SpringBoot提供了4中内置服务器供我们选择,我们可以很方便的进行切换。

  3. @Enable*注解

    SpringBoot中提供了很多Enable开头的注解,这些注解都是用于动态启用某些功能的。而其底层原理是使用@Import注解导入一些配置类,实现Bean的动态加载。

  4. @Import注解

    @Enable*底层依赖于@Import注解导入一些类,使用@Import导入的类会被Spring加载到IOC容器中。而@Import提供4种用法:

    • 导入Bean
    • 导入配置类
    • 导入 ImportSelector 实现类。一般用于加载配置文件中的类
    • 导入 ImportBeanDefinitionRegistrar 实现类。
  5. @EnableAutoConfiguration 注解

    • @EnableAutoConfiguration 注解内部使用 @Import(AutoConfigurationImportSelector.class)来加载配置类。
    • 配置文件位置: META-INF/spring.factories,该配置文件中定义了大量的配置类,当 SpringBoot 应用启动时,会自动加载这些配置类,初始化Bean
    • 并不是所有的Bean都会被初始化,在配置类中使用Condition来加载满足条件的Bean

2.2、SpringBoot 监听机制

  1. Java 监听机制
    SpringBoot 的监听机制,其实是对Java提供的事件监听机制的封装。
    Java中的事件监听机制定义了以下几个角色:

    • 事件: Event,继承 java.util.EventObject 类的对象
    • 事件源: Source ,任意对象Object
    • 监听器: Listener,实现 java.util.EventListener 接口 的对象
  2. SpringBoot 监听机制
    SpringBoot 在项目启动时,会对几个监听器进行回调,我们可以实现这些监听器接口,在项目启动时完成
    一些操作。
    ApplicationContextInitializer、 SpringApplicationRunListener、 CommandLineRunner、 ApplicationRunner

2.3、SpringBoot 启动流程分析

image

以上是关于SpringBoot快速入门的主要内容,如果未能解决你的问题,请参考以下文章

SpringData 基于SpringBoot快速入门

SpringBoot -- 概述和快速入门快速构建SpringBoot工程

SpringBoot快速入门

Java 微服务 乐优网络商城 day01 源代码 SpringBoot的SpringMVC快速入门

快速入门:创建第一个SpringBoot工程

快速上手SpringBoot盘点盘点入门程序制作的四种方式(有图有代码)