资讯专栏INFORMATION COLUMN

maven的java web工程改造为springboot项目

Arno / 1173人阅读

摘要:更改资源文件的位置把目录下的文件拷贝到目录的目录下迁移扩展迁移的实现类会自动被用来启动容器获取到。将必要的和等注册到容器。添加一系列的以便支持对请求和相应的类型转换。自动配置和注册。自定义可以通过注解在继承的类上面,来自定义的配置

更改资源文件的位置

把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的实现类会自动被SpringServletContainerInitializer(用来启动servlet3.0容器)获取到。

EnableWebMvc

开启该注解,会开启一些mvc的默认配置:

必要的ViewResolver,比如ContentNegoti-atingViewResolver和Bean-NameViewRe-solver。

将必要的Converter、GenericConverter和Formatter等bean注册到IoC容器。 - 添加一系列的HttpMessageConverter以便支持对Web请求和相应的类型转换。

自动配置和注册MessageCodesResolver。

但如果使用下面的方式则会覆盖默认的配置(spring-boot-starter-web该依赖会autoconfig这些)。

自定义webmvc

可以通过Configuration、EnableWebMvc注解在继承WebMvcConfigurerAdapter的类上面,来自定义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();
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66017.html

相关文章

  • SpringBoot多模块项目实践(Multi-Module)

    摘要:接下来,本文将重点阐述在环境的多模块构建过程。本项目传送门一创建聚合父工程首先使用来快速创建好一个工程。然后在里面声明该父工程包含的子模块。 序言:比起传统复杂的单体工程,使用Maven的多模块配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便。接下来,本文将重点阐述SpringBoot在M...

    renweihub 评论0 收藏0
  • 一起来学SpringBoot | 第一篇:构建第一个SpringBoot工程

    摘要:由于本人更习惯使用所以后续案例都是基于与,同时这里是基于最新的编写的哦创建项目初次接触,我们先来看看如何创建一个项目,这里以为例,其他的工具小伙伴们自行搜索创建方式。创建完项目后,各位小伙伴请认真细心的对比下与传统的工程有何区别如目录结构。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身...

    jayce 评论0 收藏0
  • Spring Boot 2 快速教程:WebFlux 快速入门(二)

    摘要:响应式编程是基于异步和事件驱动的非阻塞程序,只是垂直通过在内启动少量线程扩展,而不是水平通过集群扩展。三特性常用的生产的特性如下响应式编程模型适用性内嵌容器组件还有对日志消息测试及扩展等支持。 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK...

    gaara 评论0 收藏0
  • SpringBoot 实战 (一) | 如何使用 IDEA 构建 Spring Boot 工程

    摘要:它使用约定大于配置的理念让你的项目快速运行起来。如何使用构建工程第一步,当然是安装傻瓜式教程,请自行百度。包名,填完和后自动生成,默认即可。确认无误,点完成创建即可。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 新年立了个 flag,好好运营这个公众号。具体来说,就是每周要写两篇文章在这个号发表。刚立的 flag 可不能这么快打脸。下面送上本周第...

    Ryan_Li 评论0 收藏0
  • spring-cloud教程一:创建spring boot

    摘要:本文以一个简单的接口根据用户工号获取用户信息为例,介绍的使用。创建工程打开生成一个标准工程因为需要支持需要输入,提供对的支持。创建项目选择支持将压缩包中目录覆盖项目目录将项目替换为压缩包中的文件。 背景 想想,微服务这概念在当初刚从业时就听过,那时也只是停留在概念上,缺少技术支撑,或者说没有公认完美的技术支撑。docker的出现,给微服务提供了平台支持,spring cloud的出现给...

    Julylovin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<