使用自定义存储库作为 CRUD 实现

问题描述

我已经使用 mongo 和 redis 开发了一个 springboot 应用程序。

我使用以下注释来启用 Redis Repository 及其工作正常

@EnableRedisRepositories(basePackages = {"com.foo.something"})

但是现在我已经实现了一个自定义的 CRUD 存储库,如下所示

public abstract class RedisCrudRepositoryImpl<T,ID> implements CrudRepository<T,ID> {


  private RedisMappingContext mappingContext;
  @Autowired
  private StringRedistemplate template;
  private RedisConverter converter;
  @Autowired
  private ObjectMapper objectMapper;
  @Autowired
  private RedisCustomConversions customConversions;
  private Entityinformation<T,ID> entityinformation;

我的 Repository 类看起来像这样

public interface BaseProductRepository extends CrudRepository<BaseProduct,String> {

现在 byDefault Redis 将有自己的实现,即 keyvalueRepository 但我想使用我的自定义存储库作为 CrudRepository 的实现

我不想将 public interface BaseProductRepository extends CrudRepository 更改为

public class BaseProductRepository extends RedisCrudRepositoryImpl

扩展应该仍然是 CrudRepository 但实现应该是 RedisCrudRepositoryImpl

解决方法

我可能无法直接解决您的问题。但是,Spring 确实允许您实现自己的基本存储库并将其用作其他存储库的实现。 请参阅Spring Data Common 2.2.6第 4.6 节

文档可能因您使用的版本而异。