在 hexMachina 中使用自定义注解

Use custom annotation in hexMachina

我尝试在 hexMachina 中使用自定义注释。

在一个模块中,我注册了我的元数据:

this._annotationProvider.registerMetaData("Url", this.urlProviderModel.getUrl)

并在命令中,在宏中执行:

@Url("applicationConfig")
public var applicationConfigUrl:String;

宏在上下文中执行:

<state id="assemblingEnd" ref="applicationContext.state.ASSEMBLING_END">
    <enter command-class="app.adapter.bootstrap.BootstrapMacro" fire-once="true"/>
</state>

applicationConfigUrl 为空

少了什么?

AnnotationProvider 根据域引用提供数据。

在前面的示例中,metadata is registered on module's domain,并且 BootstrapMacro 实例是从主应用程序上下文的域(其父级)执行的。

为了解决这个问题,我已经将注解注册到 TopLevelDomain 中:

AnnotationProvider.getAnnotationProvider().registerMetaData("Url", urlProviderModule.getUrlFunction());

通过这种注册,注释将对每个域可用。这是因为 AnnotationProvider API 为所有子域的每次注册提供自动继承,并具有级联效果(子级的子级......)。

只是一个快速补充,也可以从您的主要上下文进行注册,而无需定位顶级域。

AnnotationProvider.getAnnotationProvider( context.getDomain() ).registerMetaData("Url", urlProviderModule.getUrlFunction());

单元测试有助于理解行为。他们可用 here.