【问题标题】:How to create a custom simple Spring Data Repository (without database)如何创建自定义的简单 Spring Data Repository(无数据库)
【发布时间】:2014-04-23 03:15:47
【问题描述】:

我想创建一个 Spring Data Repository,它应该通过 Spring Data Rest 公开。

问题是我的“实体”不是来自数据库。我有几个具有自定义注释并被扫描的类,这提供了一些我想向客户公开的信息。

所以基本上我需要类似的东西:

@RestRepository(path="myClasses")
interface MyRepo extends Repository<MyClass, String> {
    List<MyClass> findAll();
}

class MyRepoImpl implements MyRepo {

   List<MyClass> classes;

   MyRepoImpl() {
     // fetch stuff via classpath scanning
     // and save it to "classes"
   }

   @Override
   List<MyClass> findAll() {
     return classes;
   }

}

我现在从 Spring Data MongoDB 复制并粘贴了大约 10 个文件,以便使用自定义 FactoryBean 等获得自定义 @EnableCustomRepositories 注释。很多东西。而且还是不行……

有没有一种简单的方法可以做到这一点?当然我可以使用自定义的@Controller,但是我不能在我的其他实体中使用漂亮的rel

我真的只需要 extends Repository&lt;T, ID&gt; 并创建一些自定义方法。还是我必须使用 CrudRepository 以便 Spring Data Rest 可以找到 findOnefindAll 方法?


编辑:

更准确地说:

我的应用程序有很多被 Spring Security 使用的硬编码 Permissions。每组权限都有自己的类。例如:

@Permission
class UserPermission {
  public final static String RESET_PASSWORD = "USER_RESET_PASSWORD";
  public final static String UPDATE_PROFILE = "USER_UPDATE_PROFILE";
}

现在还有一个名为PermissionGroup 的持久类,它被持久化到数据库。这基本上只是:

class PermissionGroup {
  ID id;
  List<String> permissions;
}

我想要的是,我从 Spring Data Rest 中获取那些典型的 URL,它们公开了我的权限。所以我可以使用这些 URL 引用向 PermissionGroup 添加/删除权限。即:

POST http://localhost:8080/app/permissionGroups

{
  "permissions": [
    { "href" : "http://.../permissions/USER_RESET_PASSWORD" },
    { "href" : "http://.../permissions/USER_UPDATE_PROFILE" }
  ]
}

【问题讨论】:

标签: spring spring-mvc spring-data spring-data-rest spring-data-commons


【解决方案1】:

不要使用任何注释或配置来使用任何数据库,那么无需在您的实体类中指定,您必须在侧集方法中提供实现。 -

//@Entity
//@Table(name="myClass")

    class MyClass
    {

    private String name;

    public String getName(){

}

public void setName(){
this.name = "Lisa"
}

}

【讨论】:

  • 哇!你发明了POJO;-) ... 现在尝试将您的代码与 Spring Data Rest 和 Spring Data Repository 一起使用,您会看到 Spring Data Rest 无法识别您的 Repository,因为没有实现。这就是为什么我从 Spring Data MongoDB 复制并粘贴了 10 多个文件。我只需要一个基本上什么都不做的存储库实现(使用FactoryBeanEntityInformation 等)。 ...但正如我所说,它在某种程度上不起作用并且我无法想象为什么要复制和粘贴 10 个类只是为了删除它的几乎所有内容。所以(我希望)一定有更简单的方法。
猜你喜欢
  • 2019-03-08
  • 2018-02-01
  • 1970-01-01
  • 2016-05-07
  • 2019-01-16
  • 2020-12-02
  • 1970-01-01
  • 2019-05-28
  • 2016-10-11
相关资源
最近更新 更多