liferay 中的 PropsValues

PropsValues in liferay

为什么我们不应该在您的 portlet 中使用来自 portal-impl.jar 的任何 类?

就我而言,如何在不向 Maven 依赖项添加 portal-impl 的情况下读取 PropsValues

我正在使用 Liferay 6.2

谢谢

@Origineil - 在对您的问题的评论中 - 为您提供了替代方法,而不是使用 portal-impl.jar(例如,使用 GetterUtil.getBoolean(PropsUtil.get(PropsKeys.SESSION_TIMEOUT_AUTO_EXTEND)); 而不是 PropsValues.SESSION_TIMEOUT_AUTO_EXTEND

为什么不应该将 portal-impl.jar 添加到您的项目中?好吧,有很多原因。首先:它不起作用。如果您将 portal-impl.jar 添加到您的插件,那里有相当多的 spring 组件会重新初始化 - 他们会假设它们在 portal 上下文中。他们会丢失他们所依赖的其他代码,而您基本上会引入大量 Liferay 的实现和依赖代码,从而使您的插件大得离谱。而且初始化也不能做两次,所以怎么都行不通

此外,在 portal-impl.jar 中,您只会找到 Liferay 的实现细节 - none 此代码承诺是稳定的。不仅没有人会在意您是否依赖它,而且即使是微小的升级,它也很可能会打破您的假设。当然里面的一些组件比其他组件更稳定,但基本假设是好的。

Liferay 的 API(我们鼓励您使用)位于 portal-service.jar 中。这对所有插件都是自动可用的,它包含上面提到的实现。不要依赖于某人(Liferay)的内部实现。而是取决于已发布的API。如果这意味着您将不得不再次实施某些东西——那就这样吧。它可能稍微不那么优雅,但更多的未来证明。如果您将 portal-impl.jar 的大小与您在 PropsValues 中复制的代码量进行比较,您会发现这个单一的扩展实际上是一个明智的选择。不要仅仅因为你宁愿输入 30 个字符而不是 60 个字符而引入 30M 的代码。