mavenのjava webプロジェクトをspringbootプロジェクトに改造
リソースファイルの場所の変更
Webappディレクトリの下のファイルをresourcesディレクトリのstaticディレクトリの下にコピーする
Web.xmlの移行拡張WebApplicationInitializer移行web.xml
WebApplicationInitializerのインプリメンテーションクラスは、SpringServiceletContainerInitializer(
EnableWebMvc
注記を開くと、mvcのデフォルト構成が開きます.必要なViewResolver(ContentNegoti-atingViewResolverやBean-NameViewRe-solverなど). 必要なConverter、GenericConverter、FormatterなどのbeanをIoCコンテナに登録します.-一連のHttpMessageConverterを追加して、Webリクエストと対応するタイプ変換をサポートします. MessageCodesResolverを自動的に構成および登録します.
ただし、次の方法を使用すると、デフォルトの構成は上書きされます(
カスタムwebmvc
WebMvcConfigurerAdapterを継承するクラスで、コンフィギュレーション、EnableWebMvc注記を使用して、mvcを定義する構成から
Webappディレクトリの下のファイルをresourcesディレクトリのstaticディレクトリの下にコピーする
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のデフォルト構成が開きます.
ただし、次の方法を使用すると、デフォルトの構成は上書きされます(
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();
}
}