插件中的对象管理
在插件中你可以使用 Spring Framework 提供的常用 Bean 注解来标注一个类,然后就能使用依赖注入功能注入其他类的对象。这省去了使用工厂创建类和维护的过程,你可以像开发一个常规的 Spring 项目一样来开发插件,目前支持以下 Spring Framework 的特性:
通过模板插件创建的项目中你会看到 StarterPlugin
标注了 @Component
注解:
@Component
public class StarterPlugin extends BasePlugin {
}
假设项目中有一个 FruitService
,并将其声明了为了 Bean:
@Service
public class FruitService {
}
你可以在任何同样声明为 Bean 的类中使用依赖注入来使用它:
@Component
public class Demo {
private final FruitService fruitService;
public Demo(FruitService fruitService) {
this.fruitService = fruitService;
}
// use it...
}
依赖注入 Halo 共享的 Bean
Halo 提供了一些共享的 Bean,任何插件都可以直接依赖注入这些 Bean。
ReactiveExtensionClient
ReactiveExtensionClient
是一个用于管理自定义模型对象的增删改查的 Bean,它是反应式的。
参考 与自定义模型交互 了解更多。
ExtensionClient
ExtensionClient
作用和方法与 ReactiveExtensionClient 一样,但它是阻塞的,只能用在非 NIO 线程中,如后台任务。
SchemeManager
SchemeManager
是一个用于管理自定义模型定义的注册和销毁的 Bean。
API 参考:SchemeManager
UserService
用于操作 Halo 用户的 Bean,包括获取用户信息、更新密码、创建用户等函数。
API 参考 UserService