属性-默认源构造
属性-default-sources构造类似于参数-default-sources构造。parameters-default-sources构造允许在样本中重用(来自其他样本的)现有参数,properties-default-sources构造允许用户根据现有来源指定组件的属性。
组件的属性可以分布在样本的多个部分中。例如,属性可能来自对象参数、返回对象的替换、其他组件的属性或其他组件的输出。在此类情况下,您需要在组件的定义中重新定义在样本的其他部分中出现的属性。显然,这是多余的,且可能会导致出错。为了解决此问题,可以使用properties-default-sources构造。properties-default-sources构造是一个列的表,其中每项均标识组件的一些属性的一个来源。
例如,假定一个创建lbvserver配置的组件。此组件应按以下所示定义lbvserver的属性。
参数:—name: lb type: ns::lbvserver components:—name: lb-comp type: ns::lbvserver properties: name: $ Parameters .lb.name ipv46: $ Parameters .lb。Ipv46端口:$parameters.lb。端口servicetype: $parameters.lb。Servicetype lbmethod: $parameters.lb。lbmethod < !——NeedCopy >
在上述示例中,看到组件部分中定义的所有属性的值均取自$参数。Lb对象。尽管它们取自一个来源,但在样本中再次定义了属性。此外,如果向$parameters。磅对象添加与lbvserver的配置相关的新子参数,您需要更新lb-comp组件以添加与新子参数对应的新属性。
为了避免重新定义属性以及为了提取某个组件的所有相关属性而无需明确在物业部分中列出它们,可以使用properties-default-sources构造。上述示例可以编写如下。
参数:—name: lb type: ns::lbvserver components:—name: lb-comp type: ns::lbvserver properties-default-sources:—$ Parameters。磅< !——NeedCopy >
在上述示例中,通过使用properties-default-sources构造,减小了组件定义的规模,这样,您可以简明地定义组件。此外,每当组件的属性的来源更改时,更改会自动反映出来。例如,在$parameters。磅对象中添加新属性“persistencetype”时,由于persistencetype是lbvserver的属性,因此,默认情况下,此属性添加到lb-comp的配置。因此,properties-default-sources构造提供了定义组件的动态接口,而无需担心组件的属性的来源发生的更改。
计算组件的属性
本节讨论如果在组件中使用properties-default-sources构造,如何提取属性。首先,样本编译器根据组件的类型(在上述示例中为lbvserver)标识组件的属性列表。然后,编译器按这些属性的定义顺序(在组件的properties-default-sources部分中)从多个来源中提取它们。如果某个属性存在于多个来源中,则出现在最后一个来源中的该属性的优先级高于其他来源中的该属性。最后,可以在组件的属性部分中覆盖使用properties-default-sources构造提取的属性。请务必注意,组件部分的定义至少应有一个properties-default-sources部分或一个属性部分。可以有两者。