有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重写默认Spring数据REST配置

我试图定制一个SpringDataREST+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> {
}

我希望能够通过以下方式执行动态web服务查询,这些查询将映射到QueryDSL谓词操作:

/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数据REST使用的默认QuerydslPredicateBuilder。这个bean是作为RepositoryRestMvcConfiguration类中RootResourceInformationHandlerMethodArgumentResolverbean创建的一部分创建的。这带来了几个问题

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

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

  3. 鉴于上述问题,似乎奇怪的是,没有一种更简单的方法来定制这种行为。我错过什么了吗

在SpringDataREST中重写默认配置bean的最佳实践是什么


共 (0) 个答案