我使用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());
}
}
答案 0 :(得分:1)
好吧我明白了。在这种情况下,SpringWebAppInitializer不是必需的。我刚刚将此代码添加到Application.java:
@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
ServletRegistrationBean reg = new ServletRegistrationBean(dispatcherServlet);
reg.addUrlMappings("/api/*");
return reg;
}
我认为这是使用Spring Boot修改(添加,更改映射等)servlet的正确方法。