如何使用 Java 泛型为实体创建 HAL 链接

How to use Java Generics for creating HAL links for entities

我正在使用 Springboot v 2.3.2。

我有不同的实体 class,比如 A 和 B。现在执行完 CRUD 操作后,我需要 return HAL 格式的响应。目前我已经在每个控制器 classes 中创建了方法。但是加班我可以看到这些本质上是相似的。因此,我正在考虑重构它并应用 Java 泛型。

这是一段代码。请指导我如何进行此更改或有其他更好的方法。

在这两种方法中,除了实体类型之外,一切都是相同的。

    import org.springframework.hateoas.EntityModel;
    private final RepositoryEntityLinks entityLinks;

    private EntityModel<A> generateLinks(A a) {
        EntityModel<A> resource = EntityModel.of(a);
        resource.add(entityLinks.linkToItemResource(A.class, a.getId()).withSelfRel());
        resource.add(entityLinks.linkToCollectionResource(A.class));
        resource.add(entityLinks.linksToSearchResources(A.class));
        return resource;
    }

    private EntityModel<B> generateLinks(B b) {
        EntityModel<B> resource = EntityModel.of(b);
        resource.add(entityLinks.linkToItemResource(B.class, b.getId()).withSelfRel());
        resource.add(entityLinks.linkToCollectionResource(B.class));
        resource.add(entityLinks.linksToSearchResources(B.class));
        return resource;
    }

这是实现此目的的方法。

    public  <T> EntityModel<T> generateLinks(T entity, Object id) {
        EntityModel<T> resource = EntityModel.of(entity);
        resource.add(entityLinks.linkToItemResource(entity.getClass(), id).withSelfRel());
        resource.add(entityLinks.linkToCollectionResource(entity.getClass()));
        resource.add(entityLinks.linksToSearchResources(entity.getClass()));
        return resource;
    }