更改Spring Data Rest中的主端点(使用Spring Boot)

时间:2014-05-04 22:05:05

标签: spring spring-boot spring-data-rest

我使用Spring构建一个小应用程序(引导,数据,数据休息)。 我有一些JumRepositories,它们被aumotatically导出为Rest端点。 我想要做的是从/到/ api更改基本路径。 现在列出所有人,例如我对http://localhost:8080/people进行GET,我希望网址为http://localhost:8080/api/people

我尝试添加此配置类但没有任何反应(似乎Spring Boot会覆盖此配置):

public class SpringWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses()
{
    return new Class<?>[] { Application.class};
}
@Override
protected Class<?>[] getServletConfigClasses()
{
    return new Class<?>[] { RestExporterRestConfig.class, RepositoryRestMvcConfiguration.class };
}
@Override
protected String[] getServletMappings()
{       
    return new String[] { "/api/*" };
}   
}

我的 Application.java

@Configuration
@ComponentScan
@Import(RestExporterRestConfig.class)
@EnableJpaRepositories
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

}

RestExporterRestConfig

@Configuration
public class RestExporterRestConfig extends RepositoryRestMvcConfiguration {

@Bean
public Validator validator() {
    return new LocalValidatorFactoryBean();
}

@Override
protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener v) {
    v.addValidator("beforeCreate", validator());
}

@Bean
@Qualifier
public DefaultFormattingConversionService defaultConversionService() {
    DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
    conversionService.addConverter(StringToDate.INSTANCE);
    return conversionService;
}

@Bean
public DomainClassConverter<?> domainClassConverter() {
    return new DomainClassConverter<DefaultFormattingConversionService>(defaultConversionService());
}

}

1 个答案:

答案 0 :(得分:1)

好吧我明白了。在这种情况下,SpringWebAppInitializer不是必需的。我刚刚将此代码添加到Application.java:

@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet)     {
    ServletRegistrationBean reg = new ServletRegistrationBean(dispatcherServlet);
    reg.addUrlMappings("/api/*");

    return reg;
}

我认为这是使用Spring Boot修改(添加,更改映射等)servlet的正确方法。