zoukankan      html  css  js  c++  java
  • Spring Boot源码(六)自定义starter

    一、为啥要自定义starter?

      痛点:日常开发中一些独立于业务之外的通用模块,如果多个工程需要复用的时候,需要将代码硬拷贝到另一个工程并重新集成一遍,麻烦至极。

      解决方案:把这些功能模块封装成自定义的starter,复用的时候只需要将其在pom中引用依赖即可,再由SpringBoot为我们完成自动装配。

      应用场景:动态数据源、登录模块、基于AOP技术实现日志切面...

    二、自定义starter的命名规则

      SpringBoot官方提供的starter:spring-boot-starter-XXX的方式命名的。

      自定义的starter:XXX-spring-boot-starter命名规则。【为了区分SpringBoot生态提供的starter】

    三、实现逻辑

    • 1、新建maven-jar工程
    • 2、新增XXXMarker标记类【用于条件注解中的判断,实现热插拔】
    • 3、新增@EnableXXX注解【@EnableXXX开头的注解,用于设置在启动类上,实现操作热插拔】
    • 4、新增需要设置在自定义starter中的公共代码【模拟需要多模块公共依赖的代码】
    • 5、编写XXXAutoConfiguration自动配置类
    • 6、resources下创建/META-INF/spring.factories【用于注册自动配置类】

    四、代码实现

    1、新建maven jar工程,工程名为zhtest-spring-boot-starter,并导入依赖。

    2、新增标记类ConfigMarker【用于条件注解中的判断,实现热插拔】

    3、新增EnableRegisterConfigMarker注解【实际操作热插拔】

    4、新增一个javaBean【模拟需要多模块公共依赖的代码】

    5、编写自动配置类

    6、resources下创建/META-INF/spring.factories【用于注册自动配置类】

    五、使用自动配置类

      PS:热插拔的原理实际上就是启动类上的一些@EnableXXX开头的注解

      步骤如下:

    • 1、导入自定义starter的依赖
    • 2、启动类开启热插拔注解
    • 3、在全局配置文件中配置属性值
    • 4、编写测试方法

    1、导入自定义starter的依赖

    2、启动类开启热插拔注解

    3、在全局配置文件中配置属性值

    4、编写测试方法

  • 相关阅读:
    git爬坑不完全指北(二):failed to push some refs to ‘XXX’的解决方案
    javascript精雕细琢(三):作用域与作用域链
    javascript精雕细琢(二):++、--那点事
    git爬坑不完全指北(一):Permission to xxx.git denied to user的解决方案
    深入浅出CSS(三):隐藏BOSS大盘点之默认属性小总结
    读书笔记
    MPP5运维手册
    HTML自闭合(self-closing)标签
    Mysql JDBC的通信协议(报文的格式和基本类型)
    详解 & 0xff 的作用
  • 原文地址:https://www.cnblogs.com/riches/p/15451886.html
Copyright © 2011-2022 走看看