我想在Service Builder中拦截一个方法,例如:XXXLocalService.update()
。但我不知道正确的做法。我做了一些研究,但还没有找到一个明确的方法。
假设你想拦截Liferay的服务,在Liferay中基本上有两种方法可以实现这一点:
-
服务包装钩子
的作用是为您提供所需服务的包装器,例如:
UserLocalServiceWrapper
将是UserLocalService
的包装器,并且将完全控制该接口中定义的方法。如果您知道要在特定服务中修改/拦截的确切方法,这是一个很好的方法。同样,使用这种方法,您可以完全控制原始方法是否应该运行。
该链接提供了如何实现此功能的完整详细教程。
-
模型监听器钩子
当您想要跟踪特定模型上的任何更改时,应该使用此钩子,如上面的案例
User
,当您不确定哪个方法将更新模型时,这很有帮助。这基本上是给你一组方法,如
onBeforeUpdate
,onAfterUpdate
,onAfterCreate
等来控制模型。