使用背景
有一些特殊的情况需要在 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 正常注入即可。
人物A 回复
这是回复
人物B 回复
我回复你了
人物A 回复
回复已收到