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、编写测试方法

  • 相关阅读:
    thinkphp5分页
    thinkphp 获取器、修改器
    Thinkphp中对数据库的基础操作
    MYSQL 数据库内容的分页展示
    单例模式连接数据库
    简单的通过ajax ‘POST’ 方法实现与后台数据交互
    PHP中 .= 的意思
    mysqli 简单的php注册登录功能
    4.4
    梦断代码阅读笔记1
  • 原文地址:https://www.cnblogs.com/riches/p/15451886.html
Copyright © 2011-2022 走看看