gpt4 book ai didi

java - 在保存、更新和删除时发出事件的 DAO

转载 作者:行者123 更新时间:2023-11-29 03:35:52 24 4
gpt4 key购买 nike

我已经创建了几个 DAO 类(我正在使用 Spring JDBC),我想在保存、更新和删除时发出事件,以便我也可以更新搜索索引。

一种方法是在每个 DAO 中创建事件发射逻辑,但这会重复很多次。所以我想到了使用 AOP 和一个“around advice”,但我不知道这是否是使用 AOP 的正确“时间”。还有其他更合适的解决方案吗?

最佳答案

您也可以使用监听器来做到这一点。流程稍微颠倒过来,因为子类利用父类作为某种帮助者。

public abstract class AbstractCrudDao<T> {
private Collection<Listener> listeners = new HashSet<Listener>();

public void addListener(final Listener listener) {
listeners.add(listener);
}

protected void doAction(CrudAction<T> crudAction)
{
for(Listener listener : listeners) {
listener.beforeAction();
}
crudAction.doAction();
for(Listener listener : listeners) {
listener.afterAction();
}
}

public interface CrudAction {
void doAction();
}

public interface Listener {
void beforeAction();
void afterAction();
}
}

public class CarDao extends AbstractCrudDao {
public void create(Car car) {
doAction(new CrudAction() {
public void doAction() {
//create car here
}
});
}
}

您可以为每个 CRUD 操作创建一个单独的 Collection Listener,或者根据您的喜好更改它。

关于java - 在保存、更新和删除时发出事件的 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com