1. package com.ssm.yjblogs.config;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.concurrent.Executor;
  6.  
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.ComponentScan;
  9. import org.springframework.context.annotation.ComponentScan.Filter;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.context.annotation.FilterType;
  12. import org.springframework.http.MediaType;
  13. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  14. import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
  15. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.web.servlet.HandlerAdapter;
  18. import org.springframework.web.servlet.ViewResolver;
  19. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  20. import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
  21. import org.springframework.web.servlet.view.InternalResourceViewResolver;
  22.  
  23. @Configuration
  24. //定义Spring MVC扫描的包
  25. @ComponentScan(value="com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value = Controller.class)})
  26. //启动Spring MVC配置 P389
  27. @EnableWebMvc
  28. //使用@EnableAsync表明支持异步调用,而我们重写了抽象类AsyncConfigurerSupport的getAsyncExecutor方法
  29. //它是获取一个任务池,当在Spring环境中遇到注解@Async就会启动这个任务池的一条线程去运行对应的方法,这样便能执行异步了。
  30. //@EnableAsync
  31. public class WebConfig extends AsyncConfigurerSupport {
  32.  
  33. /***
  34. * 通过注解 @Bean 初始化视图解析器
  35. * @return ViewResolver 视图解析器
  36. */
  37. @Bean(name="internalResourceViewResolver")
  38. public ViewResolver initViewResolver() {
  39. InternalResourceViewResolver viewResolver =new InternalResourceViewResolver();
  40. //设置前缀和后缀,这样就能获取由控制器返回的视图逻辑名,进而找到对应的JSP文件 P436
  41. viewResolver.setPrefix("/WEB-INF/jsp/");//前缀
  42. viewResolver.setSuffix(".jsp");//后缀
  43. return viewResolver;
  44. }
  45.  
  46. /**
  47. * 初始化RequestMappingHandlerAdapter,并加载Http的Json转换器
  48. * @return RequestMappingHandlerAdapter 对象
  49. */
  50. //注解@ResponseBody将标记SpringMVC,将响应结果转变为JSON,这样在控制器返回结果后,在处理器内转变为JSON P453
  51. @Bean(name="requestMappingHandlerAdapter")
  52. public HandlerAdapter initRequestMappingHandlerAdapter() {
  53. //创建RequestMappingHandlerAdapter适配器
  54. RequestMappingHandlerAdapter rmhd = new RequestMappingHandlerAdapter();
  55. //HTTP JSON转换器
  56. MappingJackson2HttpMessageConverter jsonConverter
  57. = new MappingJackson2HttpMessageConverter();
  58. //MappingJackson2HttpMessageConverter接收JSON类型消息的转换
  59. MediaType mediaType = MediaType.APPLICATION_JSON_UTF8;
  60. List<MediaType> mediaTypes = new ArrayList<MediaType>();
  61. mediaTypes.add(mediaType);
  62. //加入转换器的支持类型
  63. jsonConverter.setSupportedMediaTypes(mediaTypes);
  64. //往适配器加入json转换器
  65. rmhd.getMessageConverters().add(jsonConverter);
  66. return rmhd;
  67. }
  68.  
  69. // @Override
  70. // public Executor getAsyncExecutor() {
  71. // ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
  72. // taskExecutor.setCorePoolSize(5);
  73. // taskExecutor.setMaxPoolSize(10);
  74. // taskExecutor.setQueueCapacity(200);
  75. // taskExecutor.initialize();
  76. // return taskExecutor;
  77. // }
  78. }

无行号版本:

  1. package com.ssm.yjblogs.config;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.concurrent.Executor;
  6.  
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.ComponentScan;
  9. import org.springframework.context.annotation.ComponentScan.Filter;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.context.annotation.FilterType;
  12. import org.springframework.http.MediaType;
  13. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  14. import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
  15. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.web.servlet.HandlerAdapter;
  18. import org.springframework.web.servlet.ViewResolver;
  19. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  20. import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
  21. import org.springframework.web.servlet.view.InternalResourceViewResolver;
  22.  
  23. @Configuration
  24. //定义Spring MVC扫描的包
  25. @ComponentScan(value="com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value = Controller.class)})
  26. //启动Spring MVC配置 P389
  27. @EnableWebMvc
  28. //使用@EnableAsync表明支持异步调用,而我们重写了抽象类AsyncConfigurerSupport的getAsyncExecutor方法
  29. //它是获取一个任务池,当在Spring环境中遇到注解@Async就会启动这个任务池的一条线程去运行对应的方法,这样便能执行异步了。
  30. //@EnableAsync
  31. public class WebConfig extends AsyncConfigurerSupport {
  32.  
  33. /***
  34. * 通过注解 @Bean 初始化视图解析器
  35. * @return ViewResolver 视图解析器
  36. */
  37. @Bean(name="internalResourceViewResolver")
  38. public ViewResolver initViewResolver() {
  39. InternalResourceViewResolver viewResolver =new InternalResourceViewResolver();
  40. //设置前缀和后缀,这样就能获取由控制器返回的视图逻辑名,进而找到对应的JSP文件 P436
  41. viewResolver.setPrefix("/WEB-INF/jsp/");//前缀
  42. viewResolver.setSuffix(".jsp");//后缀
  43. return viewResolver;
  44. }
  45.  
  46. /**
  47. * 初始化RequestMappingHandlerAdapter,并加载Http的Json转换器
  48. * @return RequestMappingHandlerAdapter 对象
  49. */
  50. //注解@ResponseBody将标记SpringMVC,将响应结果转变为JSON,这样在控制器返回结果后,在处理器内转变为JSON P453
  51. @Bean(name="requestMappingHandlerAdapter")
  52. public HandlerAdapter initRequestMappingHandlerAdapter() {
  53. //创建RequestMappingHandlerAdapter适配器
  54. RequestMappingHandlerAdapter rmhd = new RequestMappingHandlerAdapter();
  55. //HTTP JSON转换器
  56. MappingJackson2HttpMessageConverter jsonConverter
  57. = new MappingJackson2HttpMessageConverter();
  58. //MappingJackson2HttpMessageConverter接收JSON类型消息的转换
  59. MediaType mediaType = MediaType.APPLICATION_JSON_UTF8;
  60. List<MediaType> mediaTypes = new ArrayList<MediaType>();
  61. mediaTypes.add(mediaType);
  62. //加入转换器的支持类型
  63. jsonConverter.setSupportedMediaTypes(mediaTypes);
  64. //往适配器加入json转换器
  65. rmhd.getMessageConverters().add(jsonConverter);
  66. return rmhd;
  67. }
  68.  
  69. // @Override
  70. // public Executor getAsyncExecutor() {
  71. // ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
  72. // taskExecutor.setCorePoolSize(5);
  73. // taskExecutor.setMaxPoolSize(10);
  74. // taskExecutor.setQueueCapacity(200);
  75. // taskExecutor.initialize();
  76. // return taskExecutor;
  77. // }
  78. }

WebConfig类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. 基于java代码的Spring-mvc框架配置

     Spring 版本 4.3.2   maven项目 1.首先上项目目录图,主要用到的配置文件,略去css和js的文件 引包: 2.主要代码: (1)NetpageWebAppInitializer类 ...

  3. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

    经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...

  4. 【原创】Spring MVC项目搭建(使用Java配置)

    一.使用Intellij idea,新建maven项目,选择maven-archetype-webapp. 二.在src/main下新建文件夹,命名为java,并标注为source folder. 三 ...

  5. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

  6. SpringBoot入门教程(十一)过滤器和拦截器

    在做web开发的时候,过滤器(Filter)和拦截器(Interceptor)很常见,通俗的讲,过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想拒”,关心你 ...

  7. 朱晔和你聊Spring系列S1E4:灵活但不算好用的Spring MVC

    阅读PDF版本 本文会以一些例子来展现Spring MVC的常见功能和一些扩展点,然后我们来讨论一下Spring MVC好用不好用. 使用SpringBoot快速开始 基于之前的parent模块,我们 ...

  8. SpringBoot(十一)过滤器和拦截器

    v博客前言 在做web开发的时候,过滤器(Filter)和拦截器(Interceptor)很常见,通俗的讲,过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想 ...

  9. 在ASP.NET Web API中实现CORS(跨域资源共享)

    默认情况下,是不允许网页从不同的域访问服务器资源的,访问遵循"同源"策略的原则. 会遇到如下的报错: XMLHttpRequest cannot load http://local ...

随机推荐

  1. day2_jmeter断言

    断言就是:检查返回结果,测试是否通过,就是自动帮你校验结果用的 1)添加响应断言 我们模式匹配规格选择包括

  2. Tacacs+认证详细调研

    1 .TACACS+概述 1.1   什么是TACACS+ TACACS+(Terminal Access Controller Access Control System,终端访问控制器控制系统协议 ...

  3. Java如何对List集合的操作方法(一)

    目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...

  4. 洛谷P4823 拯救小矮人 [TJOI2013] 贪心+dp

    正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得 ...

  5. pyinstaller-打包python程序为exe文件

    pyinstaller ---转载文章 视频:https://www.bilibili.com/video/av21670971/ PyInstaller可以用来打包python应用程序,打包完的程序 ...

  6. rpm 安装软件包

    RPM 是RedHat Package Manager (RedHat软件包管理工具)类似windows里面的“添加/删除程序”,rpm执行安装包 RPM执行安装.删除.更新 常用命令组合 -ivh: ...

  7. what's the python之函数及装饰器

    what's the 函数? 函数的定义:(return是返回值,可以没有,不过没有的话就返回了None) def wrapper(参数1,参数2,*args,默认参数,**kwargs): '''注 ...

  8. 006-docker-安装-nginx

    1.搜索镜像 docker search nginx 2.拉取合适镜像 docker pull nginx docker images 3.使用镜像 docker run -p 8080:80 --n ...

  9. python按修改时间顺序排列文件

    import os def sort_file_by_time(file_path): files = os.listdir(file_path) if not files: return else: ...

  10. vue 获取屏幕宽高 width height

    /**  * 获取屏幕宽高  */ Vue.prototype.getViewportSize = function(){   return {     width: window.innerWidt ...