升级到Spring Boot 2.5.4后Projections投影配置不生效问题求助
Spring Boot 2.5.4 版本Projections投影不生效解决方案
- 优先修复手动注册投影的代码逻辑:Spring Boot 2.5.x 对应的 Spring Data REST 版本调整了
RepositoryRestConfigurer接口的方法签名,旧版本单参数的configureRepositoryRestConfiguration方法已被移除,你当前写的方法没有重写接口的实现,不会被框架回调,导致手动注册投影逻辑不生效,修改为如下形式即可:
@Configuration public class RestConfiguration implements RepositoryRestConfigurer { @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) { config.getProjectionConfiguration().addProjection(WhoDidWhatWhenProjection.class); } }
- 调整
@RepositoryRestResource配置:你当前配置了exported = false,该属性会直接禁止该仓库的REST端点对外暴露,若你需要使用Spring Data REST自动暴露的接口,需将该属性改为true或直接删除(默认值为true)。 - 适配摘录投影的生效规则:Spring Boot 2.5.0 之后,
excerptProjection默认仅对集合查询端点(如/whoDidWhatWhens)生效,单个资源查询端点(如/whoDidWhatWhens/1)默认不会应用摘录投影,如需单个资源也应用投影,请求时需携带参数?projection=whoDidWhatWhenProjection。 - 修正投影类型不匹配问题:实体类的id字段为包装类型
Long,你当前投影接口中id返回值为基本类型long,id为null时会触发拆箱异常,建议修改为Long getId()和实体类型保持一致。 - 补充投影扫描配置:如果你的投影接口和Spring Boot启动类不在同一个包树目录下,需在启动类上添加
@EnableProjection(basePackages = "你的投影接口所在包路径")注解,指定框架扫描投影的包范围。
内容的提问来源于stack exchange,提问作者simbro
相关产品推荐
相关产品推荐

