From e50a9dcb8906bdc0cf307d94ce99bb0804f5bd56 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 25 Nov 2015 14:46:00 +0100 Subject: [PATCH] DATAREST-714 - Reference documentation now mentions RepositoryrestConfigurer instead of RepositorytestMvcConfiguration. Fixed documentation on how to customize Spring Data REST by moving away from extending RepositoryRestMvcConfiguration to RepositoryRestConfigurer. --- src/main/asciidoc/getting-started.adoc | 42 +++++++++++++++++++------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/asciidoc/getting-started.adoc b/src/main/asciidoc/getting-started.adoc index 098ef9dfa..a7b6a6798 100644 --- a/src/main/asciidoc/getting-started.adoc +++ b/src/main/asciidoc/getting-started.adoc @@ -41,7 +41,7 @@ When using Spring Boot, Spring Data REST gets configured automatically. [[getting-started.gradle]] == Adding Spring Data REST to a Gradle project -To add Spring Data REST to a Gradle-based project, add the `spring-data-rest-webmvc` artifact to your compile-time dependencies: +To add Spring Data REST to a Gradle-based project, add the `spring-data-rest-webmvc` artifact to your compile-time dependencies: [source,groovy,subs="verbatim,attributes"] ---- @@ -54,7 +54,7 @@ dependencies { [[getting-started.maven]] == Adding Spring Data REST to a Maven project -To add Spring Data REST to a Maven-based project, add the `spring-data-rest-webmvc` artifact to your compile-time dependencies: +To add Spring Data REST to a Maven-based project, add the `spring-data-rest-webmvc` artifact to your compile-time dependencies: [source,xml,subs="verbatim,attributes"] ---- @@ -68,10 +68,13 @@ To add Spring Data REST to a Maven-based project, add the `spring-data-rest-webm [[getting-started.configuration]] == Configuring Spring Data REST -To install Spring Data REST alongside your existing Spring MVC application, you need to include the appropriate MVC configuration. Spring Data REST configuration is defined in a class called `RepositoryRestMvcConfiguration`. You can either import this class into your existing configuration using an `@Import` annotation or you can subclass it and override any of the `configureXXX` methods to add your own configuration to that of Spring Data REST. +To install Spring Data REST alongside your existing Spring MVC application, you need to include the appropriate MVC configuration. +Spring Data REST configuration is defined in a class called `RepositoryRestMvcConfiguration` and that class can just be imported into your applications configuration. IMPORTANT: This step is unnecessary if you are using Spring Boot's auto-configuration. Spring Boot will automatically enable Spring Data REST when you include *spring-boot-starter-data-rest* and either in your list of dependencies, and you your app is flagged with either `@SpringBootApplication` or `@EnableAutoConfiguration`. +To customize the configuration, register a `RepositoryRestConfigurer` (or extend `RepositoryRestConfigurerAdapter`) and implement or override the `configure…`-methods relevant to your use case. + Make sure you also configure Spring Data repositories for the store you use. For details on that, please consult the reference documentation for the http://projects.spring.io/spring-data/[corresponding Spring Data module]. [[getting-started.basic-settings]] @@ -108,20 +111,37 @@ With Spring Boot 1.1 or earlier, or if you are not using Spring Boot, simply do [source,java] ---- @Configuration -public class CustomizedRestMvcConfiguration extends RepositoryRestMvcConfiguration { +class CustomRestMvcConfiguration { - @Override - public RepositoryRestConfiguration config() { - RepositoryRestConfiguration config = super.config(); - config.setBasePath("/api"); - return config; + @Bean + public RepositoryRestConfigurer repositoryRestConfigurer() { + + return new RepositoryRestConfigurerAdapter() { + + @Override + public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + configuration.setBasePath("/api") + } + }; } } ---- -In your Spring application configuration, introduce this with `@Import(CustomizedRestMvcConfiguration.class)`. +Alternatively just register a custom implementation of `RepositoryRestConfigurer` as Spring bean and make sure it gets picked up by component scanning: -Both of these approaches will change the base path to `/api`. +[source,java] +---- +@Component +public class CustomizedRestMvcConfiguration extends RepositoryRestConfigurerAdapter { + + @Override + public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + configuration.setBasePath("/api") + } +} +---- + +Both of these approaches will change the base path to `/api`. === Changing other Spring Data REST properties