Spring:覆盖CrudRepository中的save方法

11

我想在 CrudRepository 的保存方法中添加一些代码,但保留原有功能。之后,保存方法应该像之前一样保存到存储库,但另外执行额外的操作。这可能吗?如果可能,我应该怎么做呢?

提前感谢您的任何提示。

编辑

所以,我想创建这样的方法:

@Override
public default <S extends MyClass> S save(S myClassItem) {
    //here my functionality 
    super.save(myClassItem); //from CrudRepository
    return myClassItem;
}

你有自己的crudRepository吗?还是来自某个jar包? - Rajnikant Patel
扩展CrudRepo,覆盖您的保存方法,然后在父存储库上调用super(args)....简而言之 - Mechkov
3
你确定该代码应该放在save方法里而不是你正在使用的service方法中吗?你想要添加什么? - M. Deinum
@Mechkov CrudRepository是一个接口...你能详细说明一下吗? - Rafael
@M.Deinum 我遇到了类似的问题...我猜这里的关键是 rest repository 被自动公开了,所以没有服务方法。 - Rafael
1个回答

3

我认为在这样的方法中(默认和重写),不可能使用super。因此,您必须更改该方法的名称-这可能并不完全是您要寻找的:

public interface TestRepository extends CrudRepository<MyClass, String> {

    default MyClass mySave(MyClass myClassItem) {
        save(myClassItem);
        return myClassItem;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接