我在aem中看到过配置有两个部分,第一个是静态的最终字符串,其名称我将访问配置属性,另一个是实例变量,其值将从属性Dictionary对象中获取。
例如在Sling自己的代码中,
public class ResourceResolverFactoryActivator implements Runnable {
...
@Property(
boolValue = {true},
label = "Namespace Mangling",
description = ".."
)
private static final String PROP_MANGLE_NAMESPACES = "resource.resolver.manglenamespaces";
... // other code in between
private boolean mangleNamespacePrefixes;
protected void activate(ComponentContext componentContext){
...
this.mangleNamespacePrefixes = PropertiesUtil.toBoolean(properties.get("resource.resolver.manglenamespaces"), false);
...
}
此处final String PROP_MANGLE_NAMESPACES
和实例boolean mangleNamespacePrefixes
的意义何在?为什么两个不同的变量只代表一个@Property
?
答案 0 :(得分:2)
PROP_MANGLE_NAMESPACES
用于存储属性名称(felix将使用该名称来保留属性)。 mangleNamespacePrefixes
用于存储该属性的值。
如果您愿意在所需的任何地方使用mangleNamespacePrefixes
,则无需定义PropertiesUtil.toBoolean(properties.get(PROP_MANGLE_NAMESPACES), false)
。