【发布时间】:2020-10-15 17:09:07
【问题描述】:
我需要在我的 sling 模型中使用环境(dev|prod 等,而不是运行模式,例如 author|publish)。如何将其注入到我的核心模型中?
有这方面的服务吗?
【问题讨论】:
我需要在我的 sling 模型中使用环境(dev|prod 等,而不是运行模式,例如 author|publish)。如何将其注入到我的核心模型中?
有这方面的服务吗?
【问题讨论】:
dev|prod 等,而不是运行模式,例如 author|publish
author 和publish 属于固定 运行模式,但运行模式通常也可用于区分dev 和prod(或类似环境)。
通常,当需要区分 AEM 环境时,例如dev vs prod,它是通过custom run modes实现的。虽然 AEM 即云服务对您可以自定义的数量设置了一些限制,但您提到的案例仍然涵盖 OOTB。除其他外,它can be used to manage environment-specific OSGi config。
本地/托管部署为您提供更大的灵活性。为此,我一直使用自定义的运行模式。
需要注意的一点是,您需要以编程方式检查 Sling 模型中的运行模式,这确实引起了人们的注意。我不确定你在实现什么,但如果某个功能依赖于环境,我宁愿通过分配给给定运行模式的替代 OSGi 配置来处理它。我认为在需要时将另一个配置添加为 sling:OsgiConfig 节点通常更容易,而不是在仅识别一组预定环境的 Java 类中调整条件逻辑。
如果您有一组这样的运行模式,您可以将SlingSettingsService 注入您的模型并以这种方式读取运行模式。或者您可以编写一个 OSGi 服务来封装您需要的任何逻辑。这样的服务将以与给定环境相关的配置启动,您可以将其直接注入到您的 Sling 模型中,知道它返回的值是您需要的值。
【讨论】: