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

mem*_*und 3 java spring spring-data-rest spring-rest

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

@SuppressWarnings("deprecation")
public class RepositoryRestConfiguration {
    private MediaType defaultMediaType = MediaTypes.HAL_JSON;
}
Run Code Online (Sandbox Code Playgroud)

问题:正如此类所在deprecation,设置/覆盖默认类型的正确方法是什么?

And*_*ose 8

您可以通过RepositoryRestConfigurationapplication.properties中的属性或仅使用属性来执行此操作.请参阅此处的文档.

RepositoryRestConfiguration类不会被弃用.其中有一些方法已被弃用.@SuppressWarnings("deprecation")类的注释并不意味着类本身已被弃用.这只是一个注释,用于告诉IDE不在IDE中显示弃用警告.

最简单的方法是在application.properties中.但是,您的属性名称错误.你不会把它设置为spring.data.rest.default-media-type.它期望的实际财产是spring.data.rest.defaultMediaType.所以在你的application.properties中,你可以:

spring.data.rest.defaultMediaType=application/json
Run Code Online (Sandbox Code Playgroud)

有了RepositoryRestConfiguration,你可以完成同样的事情:

@Configuration
class CustomRestMvcConfiguration {

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() {

    return new RepositoryRestConfigurerAdapter() {

      @Override
      public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setDefaultMediaType(MediaType.APPLICATION_JSON);
      }
    };
  }
}
Run Code Online (Sandbox Code Playgroud)