覆盖默认的Spring Data REST配置

时间:2016-10-20 15:38:05

标签: java spring spring-data spring-data-rest querydsl

我正在尝试自定义Spring Data REST + QueryDSL + JPA应用程序来处理自定义Web服务查询参数。给出一个简单的域模型和它的存储库......

public class Person {
    private Long id;
    private String name;
    private Integer age;
    ...
}

@RepositoryRestResource
public interface PersonRepository extends PagingAndSortingRepository<Person, Long>, QueryDslPredicateExecutor<Person> {
}

我希望能够以下列方式执行将映射到QueryDSL谓词操作的动态Web服务查询:

/person?name=Joe  // works by default
/person?nameEndsWith=oe // resolves to path 'person.name' with operations 'ENDS_WITH'
/person?ageGreaterThan=20 // resolves to path 'person.age' with operation 'GT'

看起来最简单的方法是覆盖Spring Data REST使用的默认QuerydslPredicateBuilder。此bean是作为RootResourceInformationHandlerMethodArgumentResolver类中RepositoryRestMvcConfiguration bean创建的一部分创建的。这提出了几个问题。

  1. 关于如何在自动配置类中重写bean,没有明确的文档。我可以扩展RepositoryRestMvcConfiguration并覆盖bean方法,但不清楚这是否会破坏任何其他配置。

  2. 使用HandlerMethodResolverQuerydslPredicateBuilder的默认RootResourceInformationHandlerMethodArgumentResolver不是公共类。我基本上需要复制这个现有类的代码,以使其按预期工作。

  3. 鉴于上述问题,似乎很奇怪没有更简单的方法来自定义此行为。我错过了什么吗?

  4. 在Spring Data REST中覆盖默认配置bean的最佳做法是什么?

0 个答案:

没有答案