SpringBoot自定义starter开发:开启yml提示功能

🙈作者简介:练习时长两年半的Java up主
🙉个人主页:程序员老茶
🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连

课程名:Java

内容/作用:知识点/设计/实验/作业/练习

学习:SpringBoot自定义starter开发:开启yml提示功能

功能性完善:开启yml提示功能

​ 我们在使用springboot的配置属性时,都可以看到提示,尤其是导入了对应的starter后,也会有对应的提示信息出现。但是现在我们的starter没有对应的提示功能,这种设定就非常的不友好,本节解决自定义starter功能如何开启配置提示的问题。

​ springboot提供有专用的工具实现此功能,仅需要导入下列坐标。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

​ 程序编译后,在META-INF目录中会生成对应的提示文件,然后拷贝生成出的文件到自己开发的META-INF目录中,并对其进行编辑。打开生成的文件,可以看到如下信息。其中groups属性定义了当前配置的提示信息总体描述,当前配置属于哪一个属性封装类,properties属性描述了当前配置中每一个属性的具体设置,包含名称、类型、描述、默认值等信息。hints属性默认是空白的,没有进行设置。hints属性可以参考springboot源码中的制作,设置当前属性封装类专用的提示信息,下例中为日志输出模式属性model设置了两种可选提示信息。

{
  "groups": [
    {
      "name": "tools.ip",
      "type": "cn.itcast.properties.IpProperties",
      "sourceType": "cn.itcast.properties.IpProperties"
    }
  ],
  "properties": [
    {
      "name": "tools.ip.cycle",
      "type": "java.lang.Long",
      "description": "日志显示周期",
      "sourceType": "cn.itcast.properties.IpProperties",
      "defaultValue": 5
    },
    {
      "name": "tools.ip.cycle-reset",
      "type": "java.lang.Boolean",
      "description": "是否周期内重置数据",
      "sourceType": "cn.itcast.properties.IpProperties",
      "defaultValue": false
    },
    {
      "name": "tools.ip.model",
      "type": "java.lang.String",
      "description": "日志输出模式  detail:详细模式  simple:极简模式",
      "sourceType": "cn.itcast.properties.IpProperties"
    }
  ],
  "hints": [
    {
      "name": "tools.ip.model",
      "values": [
        {
          "value": "detail",
          "description": "详细模式."
        },
        {
          "value": "simple",
          "description": "极简模式."
        }
      ]
    }
  ]
}

总结

  1. 自定义starter其实就是做一个独立的功能模块,核心技术是利用自动配置的效果在加载模块后加载对应的功能
  2. 通常会为自定义starter的自动配置功能添加足够的条件控制,而不会做成100%加载对功能的效果
  3. 本例中使用map保存数据,如果换用redis方案,在starter开发模块中就要导入redis对应的starter
  4. 对于配置属性务必开启提示功能,否则使用者无法感知配置应该如何书写
往期专栏
Java全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MQTT 是一种轻量级的消息传输协议,可以帮助我们实现设备之间的通信和数据交换。Spring Boot 是一个非常流行的 Java Web 开发框架,提供了很多方便的工具和组件,可以帮助我们快速构建 Web 应用程序。将 MQTT 封装成 Spring Boot 自定义 starter,可以更方便地在 Spring Boot 项目中使用 MQTT。 下面是如何将 MQTT 封装成 Spring Boot 自定义 starter 的步骤: 1. 创建一个 Spring Boot 项目 首先,我们需要创建一个新的 Spring Boot 项目。可以使用 Spring Initializr 或者手动创建一个 Maven 或 Gradle 项目。 2. 添加 MQTT 依赖 在 pom.xml 或 build.gradle 文件中添加 MQTT 的依赖,例如: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> ``` 3. 创建 MQTT 工具类 创建一个 MQTT 工具类,用于连接 MQTT 服务器、订阅主题、发布消息等操作。可以参考 Eclipse Paho 官方文档编写 MQTT 工具类。 4. 创建自定义 starter 创建一个新的模块,用于封装 MQTT 工具类,可以命名为 mqtt-spring-boot-starter。 在该模块的 pom.xml 或 build.gradle 文件中添加 Spring Boot Starter 的依赖,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.4.5</version> </dependency> ``` 在 src/main/resources/META-INF 目录下创建 spring.factories 文件,内容如下: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.mqtt.MqttAutoConfiguration ``` 其中,`com.example.mqtt.MqttAutoConfiguration` 是自动配置类的全限定名,用于将 MQTT 工具类注入到 Spring 容器中。 5. 创建自动配置类 创建一个自动配置类,用于将 MQTT 工具类注入到 Spring 容器中。可以参考 Spring Boot 官方文档编写自动配置类。 ```java @Configuration @ConditionalOnClass({MqttClient.class}) @EnableConfigurationProperties(MqttProperties.class) public class MqttAutoConfiguration { @Bean @ConditionalOnMissingBean public MqttClient mqttClient(MqttProperties properties) throws MqttException { MqttClient mqttClient = new MqttClient(properties.getBrokerUrl(), properties.getClientId(), new MemoryPersistence()); mqttClient.connect(); return mqttClient; } @Bean @ConditionalOnMissingBean public MqttTemplate mqttTemplate(MqttClient mqttClient) { return new MqttTemplate(mqttClient); } } ``` 在上面的代码中,我们使用了 @ConditionalOnClass 和 @EnableConfigurationProperties 注解来控制自动配置类的启用条件和属性配置。 6. 创建配置文件 在 src/main/resources 目录下创建 application.properties 或 application.yml 文件,用于配置 MQTT 的参数。例如: ```properties mqtt.brokerUrl=tcp://localhost:1883 mqtt.clientId=example-client ``` 7. 测试 使用 Spring Boot 的 starter 机制,我们可以非常方便地将自定义的 MQTT Starter 引入到项目中,并直接使用 MQTT 工具类进行操作。例如: ```java @Autowired private MqttTemplate mqttTemplate; public void publishMessage(String topic, String payload) { mqttTemplate.publish(topic, payload.getBytes(), 0, false); } ``` 通过以上步骤,我们就可以将 MQTT 封装成 Spring Boot 自定义 starter,并提供 util 工具访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值