# custom-springboot-starter **Repository Path**: salierime/custom-springboot-starter ## Basic Information - **Project Name**: custom-springboot-starter - **Description**: 基于 Java SPI机制,自定义springboot-starter实现功能组件化,可插拔。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-01-06 - **Last Updated**: 2025-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 0. 前置知识: SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。 正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。 ## java spi机制的缺点 (1) 不能按需加载,需要遍历所有的实现,并实例化,然后在循环中才能找到我们需要的实现。如果不想用某些实现类,或者某些类实例化很耗时,它也被载入并实例化了,这就造成了浪费。 (2) 获取某个实现类的方式不够灵活,只能通过 Iterator 形式获取,不能根据某个参数来获取对应的实现类。 (3) 多个并发多线程使用 ServiceLoader 类的实例是不安全的。 ## spring spi机制 (1) Java SPI 是一个服务提供接口对应一个配置文件,配置文件中存放当前接口的所有实现类,多个服务提供接口对应多个配置文件,所有配置都在 services 目录下。 (2) Spring SPI 是一个 spring.factories 配置文件存放多个接口及对应的实现类,以接口全限定名作为key,实现类作为value来配置,多个实现类用逗号隔开,仅 spring.factories 一个配置文件。 (3) 和 Java SPI 一样,Spring SPI 也无法获取某个固定的实现,只能按顺序获取所有实现。 # 1. 示例starter工程: ## 1.1. 工程划分 (1) java-spi-test01: java spi测试工程 (2) spring-spi-test01: spring spi测试工程 ## 1.2 工程划分 (1) 测试工程:kuangstudy-kaptcha-auto-configuration-test (2) 自定义starter:kuangstudy-kaptcha-boot-autoconfiguration (3) 自定义starter:kuangstudy-kaptcha-boot-neableautoconfiguration # 2. 本地文件上传starter工程: ## 2.1 工程划分: (1) 测试工程:sali-upload-controller-test (2) 自定义starter:sali-upload-local-boot-autoconfiguration ## 2.2 用法: Step1:D盘新建一个文件夹sali-file-set Step2:打包sali-upload-local-boot-autoconfiguration工程 Step3:在测试工程的application-local.yml配置文件里,修改暴露出来的参数 Step4:启动测试工程,访问http://localhost:8777/upload-local Step5:上传图片,返回结果有在线查看图片的路径。 # 3. 阿里云oss文件上传starter工程: ## 3.1 工程划分: (1) 测试工程:sali-upload-controller-test (2) 自定义starter:sali-upload-oss-boot-autoconfiguration ## 3.2 用法: Step1:开通阿里云oss文件存储桶,设置公共读写权限 Step2:打包sali-upload-oss-boot-autoconfiguration工程 Step3:在测试工程的application-oss.yml配置文件里,修改暴露出来的参数 Step4:启动测试工程,访问http://localhost:8777/upload-oss Step5:上传图片,返回结果有在线查看图片的路径。 # 4. 支付宝支付starter工程(未调试,调试需要安卓手机做支付宝沙箱客户端): ## 4.1 工程划分: (1)测试工程:sali-pay-controller-test (2)自定义starter:sali-pay-alipay-boot-autoconfiguration ## 4.2 用法: Step1:通过https://open.alipay.com/, Step1-1:获取1)APPID、2)支付宝网关地址、3)授权回调地址、4)应用私钥、5)支付宝公钥。 Step1-2:此外,还可以在上面配置回调地址(本测试工程里面有回调接口),以实现支付后的订单逻辑。 Step2:打包sali-pay-alipay-boot-autoconfiguration工程 Step3:在测试工程的application-aplipay.yml配置文件中,修改保留暴露出来的参数 Step4:启动测试工程,访问http://localhost:8989/index-alipay Step5:获取通过支付宝沙箱可支付的付款二维码 # 5. 提示词starter 工程 ## 5.1 工程划分: (1) 测试工程: semptian-prompt-test (2) 自定义 starter: semptian-prompt-starter ## 5.2 用法: Step1: 测试工程maven引入提示词starter,并配置提示词excel文件路径 Step2: 启动测试类,指定模型、业务指标、语言调用excel中的提示词。