Как использовать Java Generics для создания HAL-ссылок для сущностей

Я использую Springboot v 2.3.2.

У меня другой класс сущности, например A и B. Теперь после выполнения операций CRUD мне нужно возвращать ответы в формате HAL. В настоящее время я создал методы в каждом классе контроллера. Но со временем я вижу, что они похожи по своей природе. Поэтому я думаю о его рефакторинге и применении Java Generics.

Вот фрагмент кода. Пожалуйста, расскажите, как я могу внести это изменение, или есть другой способ лучше.

В обоих этих методах, кроме типа сущности, все одинаково.

    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;
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот способ добиться этого.

    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;
    }

Другие вопросы по теме