Мне было поручено очистить старый код, написанный разработчиком, которого давно нет.Мне удалось привести в порядок большую часть этого, однако в инициализаторе Web MVC есть некоторый код, который сопротивлялся всем моим попыткам.
public class SpringWebMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
public void onStartup(ServletContext servletContext) {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet", new DispatcherServlet(context));
dispatcherServlet.addMapping("/foo/", "/bar");
dispatcherServlet.setAsyncSupported(true);
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("utf-8");
FilterRegistration encodingFilterRegistration = servletContext.addFilter("characterEncodingFilter", characterEncodingFilter);
encodingFilterRegistration.
addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/");
}
protected Class<?>[] getRootConfigClasses() {
return new Class[]{};
}
protected Class<?>[] getServletConfigClasses() {
return new Class[] {SpringMvcConfig.class};
}
protected String[] getServletMappings() {
return new String[] {"/foo/", "/bar"};
}
}
В идеале, я хотел бы иметь это onStartup()
вызов метода super.onStartup()
и пусть среда Spring позаботится о контексте, диспетчере, фильтре и т. д. через @Beans
.Однако все, что я пробовал, не удалось ни во время компиляции, ни во время выполнения.Можно ли это сделать?И, если да, то как?
Вот класс конфигурации (если он уместен):
@Configuration
@EnableWebMvc
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}