使用 HZERO API个性化
API 个性化用于在程序运行期间,向服务中某个类的某个方法前、后加入某段业务代码,或者直接替换整个方法的业务逻辑,即业务方法客制化。注意是运行期间动态更改,无侵入,而不是事先在代码中写死切入点或逻辑。
-
菜单路径:开发管理 > 个性化管理 > API个性化
-
菜单层次:平台级
个性化切入点
个性化切入点列表
个性化切入点 下展示的是有哪些可以切入的点,精确到 服务 > 包 > 类 > 方法(参数列表)
通过 刷新服务 按钮可以刷新服务中的切入点,刷新服务时,将调用服务中的客户端接口扫描服务中的包、类、方法。
个性化切入点操作
通过点击页面上的 刷新服务
按钮可以刷新服务中的切入点,刷新服务时,将调用服务中的客户端接口扫描服务中的包、类、方法。
- 服务名:选择需要扫描的服务
- 包名:输入需要扫描的包路径,多个包可以用逗号隔开。
注意 :接口、注解、枚举、原生、数组等类型的类,以及代理类 都不会被扫描出来
点击删除按钮可以删除选中的个性化切入点
个性化规则
个性化规则维护通用的切入规则,维护业务代码
列表字段:
- 租户:选择只对某个租户生效
- 规则编码:个性化规则编码
- 规则名称:个性化规则名称
- 位置:默认有 前置、后置、替换。前置则插入方法体前;后置则插入方法最后;替换则替换整个方法的逻辑。
- 类别:支持 Java、Groovy、URL,其中对 Java 的支持最好。
- 同步:是否同步调用,只有在同步的情况下才可以替换返回值。
- 代码:个性化插入的业务代码。
个性化规则新建
点击新建
按钮,打开新建页面
必输字段:
- 租户:选择只对某个租户生效
- 位置:默认有 前置、后置、替换。前置则插入方法体前;后置则插入方法最后;替换则替换整个方法的逻辑。
- 类别:支持 Java、Groovy、URL,其中对 Java 的支持最好。
- 同步:是否同步调用,只有在同步的情况下才可以替换返回值。
- 代码:个性化插入的业务代码。
非必输字段:
描述:个性化规则简单介绍
个性化代码编写注意事项
- 个性化代码需实现
org.hzero.boot.api.customize.commons.handler.ICustomizeHandler
接口,将所有业务逻辑写在execute
方法中。 - 在应用此规则时,会创建一个该类的对象,并调用 execute 方法来执行个性化的代码。
- 切入方法的参数会原样传到 execute 方法参数中
- 在同步的情况下,如果方法有返回值,将返回 execute 的返回值
- 如果要引用 Spring 容器中的 bean 对象,可以在方法中使用
io.choerodon.core.convertor.ApplicationContextHelper
来获取对象,不能直接在类中使用 @Autowired 注入。 - 需自行保证代码能够编译通过,建议在 IDE 工具中编写好之后再维护规则中的代码。
个性化规则编辑
点击列表中编辑
按钮,打开编辑页面
必输字段:
- 租户:选择只对某个租户生效
- 位置:默认有 前置、后置、替换。前置则插入方法体前;后置则插入方法最后;替换则替换整个方法的逻辑。
- 类别:支持 Java、Groovy、URL,其中对 Java 的支持最好。
- 同步:是否同步调用,只有在同步的情况下才可以替换返回值。
- 代码:个性化插入的业务代码(注意事项同新建)。
个性化范围
个性化范围维护了切入点与规则之间的关系,是多对多的关系。
在新建切入点时,可以选择个性化切入点,也可以手动维护。
维护好之后,需要在行上点击 应用规则 触发规则生效,服务在启动时会自动应用已经生效的规则。