Как создать несколько сервлетов диспетчера, используя Java-конфигурацию Spring MVC
Я использую Spring MVC 4.1 с сервлетом 3.1 и хочу создать два сервлета с использованием конфигурации Java, один для обычного веб-приложения и другой для API остальных. Ниже приведен мой код для инициализатора веб-приложения (эквивалент для web.xml):
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[]{"/web"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {RootApplicationConfig.class, SecurityConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {WebMvcConfig.class};
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
DelegatingFilterProxy securityFilterChain = new DelegatingFilterProxy("springSecurityFilterChain");
MultipartFilter multipartFilter = new MultipartFilter();
return new Filter[] {characterEncodingFilter,multipartFilter, securityFilterChain};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("defaultHtmlEscape", "true");
registration.setInitParameter("spring.profiles.active", "default");
}
Выше можно будет только зарегистрировать сервлет диспетчера по умолчанию, мне нужно зарегистрировать остальные API, но не нашел хороших предложений.
Каков наилучший способ сделать это, и есть ли другие решения? (думал добавить еще один класс в getServletConfigClasses()
как RestMvcConfig, но как сопоставить /api
к тому?)