Java 升级到Spring Boot 1.5-如何重构RepositoryRestMvcConfiguration?

Java 升级到Spring Boot 1.5-如何重构RepositoryRestMvcConfiguration?,java,spring,rest,spring-boot,configuration,Java,Spring,Rest,Spring Boot,Configuration,升级到Spring Boot 1.5后,将不会编译以下代码。显然,这两种方法(configureRepositoryRestConfiguration,configureValidatingRepositoryEventListener)已从RepositoryRestMVCCConfiguration类中删除。我还没有找到任何关于在SpringBoot1.5中通过Java配置rest控制器的“正确”方法的文档。我在Spring Boot 1.5+上找到的所有指南都涉及基于XML的配置,而我宁愿

升级到Spring Boot 1.5后,将不会编译以下代码。显然,这两种方法(
configureRepositoryRestConfiguration
configureValidatingRepositoryEventListener
)已从
RepositoryRestMVCCConfiguration
类中删除。我还没有找到任何关于在SpringBoot1.5中通过Java配置rest控制器的“正确”方法的文档。我在Spring Boot 1.5+上找到的所有指南都涉及基于XML的配置,而我宁愿坚持使用基于Java的配置。如何重构该类以与1.5更改兼容

@Configuration
public class CustomRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration {

  private static final String BASE_URI = "/rest";
  @Autowired private BeforeCreateSnippetValidator beforeCreateSnippetValidator;
  @Autowired private BeforeCreateModuleValidator beforeCreateModuleValidator;

  @Override
  protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    super.configureRepositoryRestConfiguration(config);
    config.setBasePath(BASE_URI);
    config.exposeIdsFor(Snippet.class, Placement.class, Module.class, Page.class, Position.class);
  }

  @Override
  protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener v) {
    v.addValidator("beforeCreate", beforeCreateSnippetValidator);
    v.addValidator("beforeCreate", beforeCreateModuleValidator);
  }
}
经过多次猜测,我终于找到了解决办法。您只需将
RepositoryRestMvcConfiguration
更改为
repositoryrestconfiguureradapter
,并将
@配置
更改为
@组件
。这是假设您有组件扫描设置

@Component
public class CustomRepositoryRestMvcConfiguration extends RepositoryRestConfigurerAdapter {

  private static final String BASE_URI = "/rest";
  @Autowired private BeforeCreateSnippetValidator beforeCreateSnippetValidator;
  @Autowired private BeforeCreateModuleValidator beforeCreateModuleValidator;

  @Override
  public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
    super.configureRepositoryRestConfiguration(config);
    config.setBasePath(BASE_URI);
    config.exposeIdsFor(Snippet.class, Placement.class, Module.class, Page.class, Position.class);
  }

  @Override
  public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener v) {
    v.addValidator("beforeCreate", beforeCreateSnippetValidator);
    v.addValidator("beforeCreate", beforeCreateModuleValidator);
  }
}