简体   繁体   中英

Upgrading to Spring Boot 1.5 - How to refactor RepositoryRestMvcConfiguration?

The following code will not compile after upgrading to Spring Boot 1.5. Apparently these two methods ( configureRepositoryRestConfiguration , configureValidatingRepositoryEventListener ) have been removed from the RepositoryRestMvcConfiguration class. I have not been able to find any documentation on what is the 'proper' way of configuring rest controllers in Spring Boot 1.5 via Java. All of the guides I have found on Spring Boot 1.5+ involve XML-based configuration, whereas I would strongly prefer to stick with Java-based configuration. How do I refactor this class to be compatible with the 1.5 changes?

@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);
  }
}

Finally after much guessing, I found the solution. You simply have to change RepositoryRestMvcConfiguration to RepositoryRestConfigurerAdapter and change @Configuration to @Component . This is assuming you have Component scan setup.

@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);
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM