Halo 插件实现自定义读取配置文件属性

使用背景

有一些特殊的情况需要在 Halo 插件中需要定义一些特殊的配置通过配置文件的方式进行读取。如:短信配置、支付配置或个性化的配置。如果直接通过@ConfigurationProperties注解是无法读取到application.yaml中自定义的属性信息。

教程

配置插件描述信息

apiVersion: plugin.halo.run/v1alpha1
kind: Plugin
metadata:
  # The name defines how the plugin is invoked, A unique name
  name: plugin-learning
spec:
  enabled: true
  requires: ">=2.16.0"
  author:
    name: Halo
    website: https://github.com/halo-dev
  logo: logo.png
  homepage: https://github.com/halo-dev/plugin-starter#readme
  repo: https://github.com/halo-dev/plugin-starter
  issues: https://github.com/halo-dev/plugin-starter/issues
  displayName: "Halo 插件教程"
  description: "编写 Halo 使用教程"
  license:
    - name: "GPL-3.0"
      url: "https://github.com/halo-dev/plugin-starter/blob/main/LICENSE"
  • 插件名称: metadata.name 定义成自己需要开发的插件名称

添加自定义配置文件

${halo.work-dir}/plugins/configs/${pluginName.yaml} 下定义你配置文件如下:

custom:
  halo:
   key: 自定义key
   value: 自定义value
  • halo.work-dir: Halo 配置的工作目录

  • pluginName.yaml: 必须是插件名称命名的 YAML 文件

定义配置属性读取 Bean

@ConfigurationProperties(prefix = "custom.halo")
@Data
public class CustomProperties {
    private String key;
    private String value;
}


@Configuration
@EnableConfigurationProperties(CustomProperties.class)
public class CustomConfiguration {
}

Bean 使用

@Component
public class CustomCompont{
	
	private final CustomProperties properties;

    public CustomCompont(CustomProperties properties){
      	this.properties = properties;
    }
}

按照 Bean 正常注入即可。