Может ли этот инициализатор Spring Web-MVC быть адаптирован для лучшего использования фреймворка? - PullRequest
0 голосов
/ 18 октября 2018

Мне было поручено очистить старый код, написанный разработчиком, которого давно нет.Мне удалось привести в порядок большую часть этого, однако в инициализаторе 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...