您的位置:首页 > Web前端

Liferay7 BPM门户开发之22: Liferay7模型监听器(Model Listeners)

2016-11-09 16:01 477 查看
Model Listeners实现ModelListener接口,用于持久化时的AOP处理

一些使用场景:

Audit Listener: 在一个独立而分离的数据库,做信息更新的审计;

Cache Clearing Listener: 缓存清除时做的额外定制处理;

Validation Listener: 实体的验证

Entity Update Listener: 实体的更新处理

在一个实体模型上可以有多个侦听器,并且无法控制他们运行的顺序。

Liferay7中你只需要处理2件事情,比6.2要简单:

1、实现 ModelListener

2、在Liferay’s OSGi运行时自动注册服务

在Liferay7中的写法:

package ...;

import ...;

@Component(
immediate = true,
service = ModelListener.class
)
public class CustomEntityListener extends BaseModelListener<CustomEntity> {

/* Override one or more methods from the ModelListener
interface.
*/
@Override
public void onAfterCreate(CustomEntity entity) throws ModelListenerException {
...
}
}


在Liferay7中不用编写docroot/WEB-INF/liferay-hook.xml,增加<portal-properties>portal.properties</portal-properties>,方便很多

在Liferay6中的写法:

package com.liferay.samples.hooks;

import com.liferay.portal.ModelListenerException;
import com.liferay.portal.model.BaseModelListener;
import com.liferay.portal.model.User;

public class MyUserListener extends BaseModelListener<User> {

@Override
public void onAfterCreate(User user) throws ModelListenerException {
  System.out.println(user.getFullName());
}

public void onAfterUpdate(User user) throws ModelListenerException {
  System.out.println(user.getFullName());
}
}


CustomEntity用于告诉监听器,实体模型的类型。

注册Liferay’s OSGi runtime:

@Component(
immediate = true,
service = ModelListener.class
)


可以实现的模型事件:

onAfterAddAssociation: 处理关联模型的AfterAdd

onAfterCreate: 在模型的DAO持久化类中Cearte事件之后,做些你的业务逻辑

onAfterRemove: 在模型的DAO持久化类中Remove事件之后,做些你的业务逻辑

onAfterRemoveAssociation: 处理关联模型的AfterRemove

onAfterUpdate: 在模型的DAO持久化类中Update事件之后,做些你的业务逻辑

onBeforeAddAssociation:

onBeforeCreate:

onBeforeRemove:

onBeforeRemoveAssociation:

onBeforeUpdate:

如果你熟悉Spring的AOP,是不是有种似曾相识的感觉,这就是Liferay7方式的AOP,好处是可以和之前的旧业务处理代码解耦(你可以做一个新的独立的ModelListener工程)
而不是在DAO持久化类或Service中去添加业务代码。
Hook钩子的其中实现方法之一就是基于Model Listeners
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: