【问题标题】:Spring: Override save method in CrudRepositorySpring:覆盖 CrudRepository 中的保存方法
【发布时间】:2015-12-18 13:21:24
【问题描述】:

我想在CrudRepository 的保存方法中添加一些代码,但保留原始功能。之后保存方法应该做之前的事情,保存到存储库但另外执行额外的操作。可能吗?如果是这样,我怎样才能正确地做到这一点?

提前感谢您的任何提示

编辑

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

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

【问题讨论】:

  • 你有自己的 crudRepository 对吗?还是来自某个罐子?
  • 扩展 CrudRepo,覆盖你的保存方法,然后在父 repo 上调用 super(args)....简而言之
  • 您确定代码应该在保存方法中而不是在您正在使用的服务方法中吗?你想添加什么?
  • @Mechkov CrudRepository 是一个接口......你能详细说明一下吗?
  • @M.Deinum 我有类似的问题......我想这里的重点是休息存储库是自动公开的,所以没有服务方法

标签: java spring spring-data


【解决方案1】:

我认为在这种方法(默认和覆盖)中使用 super 是不可能的。因此,您必须更改方法的名称 - 这可能不是您要查找的内容:

public interface TestRepository extends CrudRepository<MyClass, String> {

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

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2014-06-04
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2020-04-02
    • 2010-10-23
    • 2016-07-26
    相关资源
    最近更新 更多