如何设置 spring-data-rest 的默认媒体类型?

How to set the default media type for spring-data-rest?

RepositoryRestConfiguration 我可以看到设置 spring.data.rest.default-media-type=application/json 可以更改 @RepositoryRestResource 提供的默认媒体类型。

@SuppressWarnings("deprecation")
public class RepositoryRestConfiguration {
    private MediaType defaultMediaType = MediaTypes.HAL_JSON;
}

问题:由于这个 class 在 deprecation 中,set/override 默认类型的正确方法是什么?

您可以通过 RepositoryRestConfiguration 或在 application.properties 中使用 属性 来完成此操作。请参阅文档 here

RepositoryRestConfiguration class 未弃用。其中有一些方法已被弃用。 class 上的 @SuppressWarnings("deprecation") 注释并不意味着 class 本身已被弃用。这只是一个注释,用于告诉 IDE 不要在 IDE.

中显示弃用警告

最简单的方法是 application.properties。但是,您的 属性 名称有误。您不会将其设置为 spring.data.rest.default-media-type。它期望的实际 属性 是 spring.data.rest.defaultMediaType。因此,在您的 application.properties 中,您可以:

spring.data.rest.defaultMediaType=application/json

使用 RepositoryRestConfiguration,您可以完成同样的事情:

@Configuration
class CustomRestMvcConfiguration {

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() {

    return new RepositoryRestConfigurerAdapter() {

      @Override
      public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setDefaultMediaType(MediaType.APPLICATION_JSON);
      }
    };
  }
}
@Component
public class CustomRestConfig implements RepositoryRestConfigurer {
    @Override
    public void 
    configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setDefaultMediaType(MediaType.APPLICATION_JSON);
    }
}