自定义 Spring Boot Starter 流程

devtools/2024/12/22 2:22:15/

springboot,vue,springcloudalibaba课程视频,有需要可以看看

<!-- springboot,springboot整合redis,整合rocketmq视频: -->
https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source=14d27ec13a4737c281b7c79463687112<!-- springcloudalibaba,openfeign,nacos,gateway,sso视频:-->
https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source=14d27ec13a4737c281b7c79463687112<!-- vue+springboot前后端分离视频:-->
https://www.bilibili.com/video/BV1JLSEYJETc/?vd_source=14d27ec13a4737c281b7c79463687112<!-- shiro视频:-->
https://www.bilibili.com/video/BV1YVUmYJEPi/?vd_source=14d27ec13a4737c281b7c79463687112

自定义 Spring Boot Starter 流程

创建一个自定义的 Spring Boot Starter 通常包括以下步骤:

  1. 创建 Maven 项目:为 Starter 创建一个新的 Maven 模块。
  2. 定义依赖:在 pom.xml 中定义 Starter 需要的依赖。
  3. 创建配置属性类:定义一个配置属性类,使用 @ConfigurationProperties 注解来绑定配置文件中的属性。
  4. 创建自动配置类:创建一个配置类,使用 @Configuration 注解,并使用 @EnableConfigurationProperties 来启用配置属性类。
  5. 定义 Bean:在自动配置类中定义所需的 Bean,并使用条件注解(如 @ConditionalOnMissingBean)来控制 Bean 的创建。
  6. 创建 spring.factories 文件:在 META-INF 目录下创建 spring.factories 文件,声明自动配置类。
  7. 打包和安装:将 Starter 打包并安装到本地 Maven 仓库或发布到远程仓库。
  8. 在主项目中使用:在主项目的 pom.xmlbuild.gradle 中添加自定义 Starter 的依赖。
  9. 配置属性:在主项目的配置文件中设置 Starter 所需的属性。

自定义 Spring Boot Starter 案例

假设我们要创建一个名为 my-spring-boot-starter-greeter 的 Starter,用于添加一个简单的问候功能。

  1. 创建 Maven 项目

首先,创建一个新的 Maven 模块,比如叫 greeter-spring-boot-starter

  1. 定义依赖

greeter-spring-boot-starterpom.xml 文件中添加以下内容:

<groupId>com.example</groupId>
<artifactId>greeter-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version><dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency>
</dependencies>
  1. 创建配置属性类

创建一个名为 GreeterProperties 的类,用于绑定配置文件中的属性:

java">package com.example.greeter.properties;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "greeter")
public class GreeterProperties {private String message = "Hello";public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
  1. 创建自动配置类

创建一个自动配置类 GreeterAutoConfiguration

java">package com.example.greeter.autoconfigure;import com.example.greeter.properties.GreeterProperties;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@ConditionalOnProperty(name = "greeter.enabled", havingValue = "true")
public class GreeterAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic Greeter greeter(GreeterProperties properties) {return new Greeter(properties.getMessage());}
}
  1. 定义 Greeter Bean

创建 Greeter 类,它将使用配置的问候语:

java">package com.example.greeter;public class Greeter {private String message;public Greeter(String message) {this.message = message;}public void greet() {System.out.println(message + ", World!");}
}
  1. 创建 META-INF/spring.factories 文件

src/main/resources/META-INF 目录下创建 spring.factories 文件,并添加自动配置类的全限定名:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.greeter.autoconfigure.GreeterAutoConfiguration
  1. 打包和安装

使用 Maven 命令 mvn install 将 Starter 安装到本地仓库。

  1. 在主项目中使用

在主项目的 pom.xml 中添加 Starter 的依赖:

<dependency><groupId>com.example</groupId><artifactId>greeter-spring-boot-starter</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>
  1. 配置属性

在主项目的 application.propertiesapplication.yml 文件中设置问候语:

greeter.message=Good Morning
greeter.enabled=true

现在,当你的主项目启动时,如果 greeter.enabled 设置为 trueGreeter Bean 将被创建,并使用配置的问候语。你可以通过注入 Greeter 并调用 greet() 方法来使用这个功能。


http://www.ppmy.cn/devtools/144250.html

相关文章

安全删除硬件并弹出媒体(弹出显卡)问题处理

“安全删除硬件”图标点开之后&#xff0c;出现弹出显卡问题 解决办法&#xff1a; 本人是华硕笔记本电脑&#xff0c;这仅仅是我的解决办法&#xff0c;仅供参考&#xff01; 更新/安装“触控板驱动程序” 以下以华硕为例&#xff1a; 去电脑官网下&#xff0c;下载“触控…

如何在Java中使用封装好的API接口?

1.选择合适的 HTTP 库 在 Java 中&#xff0c;可以使用多种库来进行 HTTP 请求。java.net.HttpURLConnection是 Java 标准库中的类&#xff0c;能够满足基本的 HTTP 请求需求&#xff0c;但使用起来相对复杂。另外&#xff0c;还有一些第三方库&#xff0c;如OkHttp和Apache H…

HarmonyNext使用ListItemGroup添加头部 布局,头部布局底部留很大空白

今天使用ListItemGroup添加头部布局的时候&#xff0c;发现底部留下很多空白 头部布局使用的是相对布局RelativeContainer 错误代码如下&#xff1a; import { CommonConstants } from "ohos/utils/src/main/ets/common/CommonConstants"; import { DisPlayInfo } …

Laya ios接入goole广告,搭建环境 1

只能说麻烦的一批&#xff0c;会了不难&#xff0c;难在不会 没有mac机&#xff0c;用的mac本&#xff0c;提示----》可能需要你升级macbook系统版本&#xff0c; 1、安装cocoapods sudo gem install cocoapods -V 加上-V&#xff0c;能查看安装进度&#xff0c;记住大写的…

【深度学习】论文复现-对论文数据集的一些处理

如何书写伪代码&#xff1a; ref:https://www.bilibili.com/video/BV12D4y1j7Zf/?vd_source3f7ae4b9d3a2d84bf24ff25f3294d107 i14时产出的图片比较合理 import json import os.path from matplotlib.ticker import FuncFormatter import pandas as pd import matplotlib.py…

企业为何需要可视化数据分析系统

作为当今企业最核心的资产之一的数据&#xff0c;已经成为企业发展的重要基础。随着企业的不断发展壮大&#xff0c;随之在数据处理层面就面临重要的困扰&#xff0c;面对海量数据如何提取有效信息就是关键所在。因此在这样的背景之一&#xff0c;可视化数据分析系统的构建就成…

FPGA设计-使用 lspci 和 setpci 调试xilinx的PCIe 问题

目录 简介 lspci lspci-TV lspci-vvv 注意事项 lspci -vs lspci -vvvs 设置pci 识别setpci中的寄存器 setpci -s 00:01.0 d0.b42 简介 lspci 和 setpci 命令在 Linux 发行版中本身可用。该命令具有各种级别的输出&#xff0c;并提供非常有用的时间点查看 PCI 总线…

pytorch repeat方法和expand方法的区别

PyTorch 中的 repeat 和 expand 方法都用于调整张量的形状或重复张量&#xff0c;但它们在实现方式和内存使用上有显著的区别。以下是详细对比&#xff1a; 1. repeat 方法 功能&#xff1a;通过实际复制数据来重复张量的内容。内存&#xff1a;会分配新的内存存储重复后的张…