mavenのjava webプロジェクトをspringbootプロジェクトに改造


リソースファイルの場所の変更
Webappディレクトリの下のファイルをresourcesディレクトリのstaticディレクトリの下にコピーする
Web.xmlの移行
  • 拡張WebApplicationInitializer移行web.xml
  • public class WebInitializer implements WebApplicationInitializer {//1
    
        @Override
        public void onStartup(ServletContext servletContext)
                throws ServletException {
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            ctx.register(MyMvcConfig.class);
            ctx.setServletContext(servletContext); //2
            
            Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); //3
            servlet.addMapping("/");
            servlet.setLoadOnStartup(1);
            servlet.setAsyncSupported(true);//1
    
        }
    
    }

    WebApplicationInitializerのインプリメンテーションクラスは、SpringServiceletContainerInitializer( servlet3.0 )によって自動的に取得されます.
    EnableWebMvc
    注記を開くと、mvcのデフォルト構成が開きます.
  • 必要なViewResolver(ContentNegoti-atingViewResolverやBean-NameViewRe-solverなど).
  • 必要なConverter、GenericConverter、FormatterなどのbeanをIoCコンテナに登録します.-一連のHttpMessageConverterを追加して、Webリクエストと対応するタイプ変換をサポートします.
  • MessageCodesResolverを自動的に構成および登録します.

  • ただし、次の方法を使用すると、デフォルトの構成は上書きされます(spring-boot-starter-web autoconfig ).
    カスタムwebmvc
    WebMvcConfigurerAdapterを継承するクラスで、コンフィギュレーション、EnableWebMvc注記を使用して、mvcを定義する構成から
    @Configuration
    @EnableWebMvc// 1
    @EnableScheduling
    @ComponentScan("com.wisely.highlight_springmvc4")
    public class MyMvcConfig extends WebMvcConfigurerAdapter {// 2
    
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix("/WEB-INF/classes/views/");
            viewResolver.setSuffix(".jsp");
            viewResolver.setViewClass(JstlView.class);
            return viewResolver;
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            registry.addResourceHandler("/assets/**").addResourceLocations(
                    "classpath:/assets/");// 3
    
        }
    
        @Bean
        // 1
        public DemoInterceptor demoInterceptor() {
            return new DemoInterceptor();
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {// 2
            registry.addInterceptor(demoInterceptor());
        }
    
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/index").setViewName("/index");
            registry.addViewController("/toUpload").setViewName("/upload");
            registry.addViewController("/converter").setViewName("/converter");
            registry.addViewController("/sse").setViewName("/sse");
            registry.addViewController("/async").setViewName("/async");
        }
    
         @Override
         public void configurePathMatch(PathMatchConfigurer configurer) {
         configurer.setUseSuffixPatternMatch(false);
         }
    
        @Bean
        public MultipartResolver multipartResolver() {
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
            multipartResolver.setMaxUploadSize(1000000);
            return multipartResolver;
        }
        
        @Override
        public void extendMessageConverters(List> converters) {
            converters.add(converter());
        }
        
        @Bean 
        public MyMessageConverter converter(){
            return new MyMessageConverter();
        }
    }