在AEM中如何将项目环境纳入我的吊索模型

问题描述

我需要在吊带模型中使用环境(dev | prod等,而不是诸如author | publish之类的运行模式)。如何将其注入我的核心模型中?

有什么服务吗?

解决方法

dev | prod等,而不是诸如作者|发布之类的运行方式

authorpublish属于 fixed 固定运行模式,但是通常可以使用运行模式从dev告诉prod(或类似的环境)。

通常,当需要区分AEM环境时,例如dev vs prod,它是通过custom run modes实现的。尽管AEM作为云服务在可定制的数量上有一些限制,但您提到的情况仍涵盖OOTB。除其他事项外,它can be used to manage environment-specific OSGi config

本地/托管部署为您提供了更大的灵活性。为此,我一直使用定制的运行模式。

要注意的一件事是,它确实使您需要以编程方式检查Sling Model中的运行模式的麻烦。我不确定您要实现的功能,但是如果某项功能取决于环境,我宁愿通过分配给给定运行模式的替代OSGi配置来处理。我认为通常在需要时将另一个配置添加为sling:OsgiConfig节点比较容易,这与调整Java类中只能识别预定环境集的条件逻辑相反。

假设您具有一组类似的运行模式,则可以将SlingSettingsService注入模型并以这种方式读取运行模式。或者,您可以编写OSGi服务来封装所需的任何逻辑。这样的服务将从与给定环境相关的配置开始,并且您可以将其直接注入到Sling模型中,知道它返回的值就是您需要的值。