如何在没有服务包装器的情况下重写liferay 7中的UserLocalServiceImpl?

时间:2016-11-22 13:24:49

标签: liferay liferay-7

我为 UserLocalServiceImpl 创建了服务包装器,并在服务包装器中声明了一个新方法。但是当我使用 UserLocalServiceUtil 显式调用该方法时,编译器无法解析此方法。所以,请帮助我并告诉如何覆盖 UserLocalServiceImpl ,以便我可以在其中定义新方法。 Thanx提前..

2 个答案:

答案 0 :(得分:1)

这不起作用。您将更改Liferay发布的API的界面,并且基本上与假定Liferay的API的任何其他插件不兼容。

虽然您在技术上可以访问Liferay的所有源代码并且可以构建Liferay的修改版本,但是引入此更改,这意味着没有任何市场插件(使用UserLocalService)将与您的自定义版本兼容。任何OSGi组件都可以挂钩到Liferay并进入已发布API的callstack,没有OSGi插件可以扩展已发布的接口,这样原始接口就有了比Liferay发布的API更多的方法。

如果您依赖单独的函数调用,则可以做的最好的事情是:创建调用UserLocalService的自定义服务。

此外,在Liferay 7中,您不应再使用UserLocalServiceUtil,而应通过@Reference注释正确注入服务依赖项。 * LocalServiceUtil类纯粹是为了向后兼容,仅用于* .WAR样式插件。

答案 1 :(得分:0)

你可以做到

UserLocalServiceUtil.getService()

然后将结果转换为自定义包装器类型。然后你应该可以调用新方法。