自定义模型
Halo 自定义模型主要参考自 Kubernetes CRD 。自定义模型遵循 OpenAPI v3。设计目的在于提供一种灵活可扩展的数据存储和使用方式,便于为插件提供自定义数据支持。 比如某插件需要存储自定义数据,同时也想读取和操作自定义数据。更多细节请参考 自定义模型设计。
一个典型的自定义模型 Java
代码示例如下:
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import run.halo.app.extension.AbstractExtension;
import run.halo.app.extension.GVK;
import run.halo.app.extension.GroupKind;
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@GVK(group = "my-plugin.halo.run",
version = "v1alpha1",
kind = "Person",
plural = "persons",
singular = "person")
public class Person extends AbstractExtension {
@Schema(requireMode = Schema.RequireMode.REQUIRED)
private Spec spec;
@Schema(name="PersonSpec")
public static class Spec {
@Schema(description = "The description on name field", maxLength = 100)
private String name;
@Schema(description = "The description on age field", maximum = "150", minimum = "0")
private Integer age;
@Schema(description = "The description on gender field")
private Gender gender;
private Person otherPerson;
}
public enum Gender {
MALE, FEMALE,
}
}
要创建一个自定义模型需要三步:
- 创建一个类继承
run.halo.app.extension.AbstractExtension
。 - 使用
GVK
注解。 - 在插件
start()
生命周期方法中注册自定义模型:
@Autowired
private SchemeManager schemeManager;
@Override
public void start() {
schemeManager.register(Person.class);
}