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 @Configuration24 //定义Spring MVC扫描的包25 @ComponentScan(value="com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value = Controller.class)})26 //启动Spring MVC配置 P38927 @EnableWebMvc28 //使用@EnableAsync表明支持异步调用,而我们重写了抽象类AsyncConfigurerSupport的getAsyncExecutor方法29 //它是获取一个任务池,当在Spring环境中遇到注解@Async就会启动这个任务池的一条线程去运行对应的方法,这样便能执行异步了。30 //@EnableAsync31 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文件 ?P43641 ????????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 ?P45351 ????@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 ????70 // ???@Override71 // ???public Executor getAsyncExecutor() {72 // ???????ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();73 // ???????taskExecutor.setCorePoolSize(5);74 // ???????taskExecutor.setMaxPoolSize(10);75 // ???????taskExecutor.setQueueCapacity(200);76 // ???????taskExecutor.initialize();77 // ???????return taskExecutor;78 // ???}79 }
无行号版本:
package com.ssm.yjblogs.config;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Executor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.http.MediaType;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.scheduling.annotation.AsyncConfigurerSupport;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.stereotype.Controller;import org.springframework.web.servlet.HandlerAdapter;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration//定义Spring MVC扫描的包@ComponentScan(value="com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value = Controller.class)})//启动Spring MVC配置 P389@EnableWebMvc//使用@EnableAsync表明支持异步调用,而我们重写了抽象类AsyncConfigurerSupport的getAsyncExecutor方法//它是获取一个任务池,当在Spring环境中遇到注解@Async就会启动这个任务池的一条线程去运行对应的方法,这样便能执行异步了。//@EnableAsyncpublic class WebConfig extends AsyncConfigurerSupport { ????/*** ????* 通过注解 @Bean 初始化视图解析器 ????* @return ViewResolver 视图解析器 ????*/ ???@Bean(name="internalResourceViewResolver") ???public ViewResolver initViewResolver() { ???????InternalResourceViewResolver viewResolver =new InternalResourceViewResolver(); ???????//设置前缀和后缀,这样就能获取由控制器返回的视图逻辑名,进而找到对应的JSP文件 ?P436 ???????viewResolver.setPrefix("/WEB-INF/jsp/");//前缀 ???????viewResolver.setSuffix(".jsp");//后缀 ???????return viewResolver; ???} ???????/** ????* 初始化RequestMappingHandlerAdapter,并加载Http的Json转换器 ????* @return ?RequestMappingHandlerAdapter 对象 ????*/ ???//注解@ResponseBody将标记SpringMVC,将响应结果转变为JSON,这样在控制器返回结果后,在处理器内转变为JSON ?P453 ???@Bean(name="requestMappingHandlerAdapter") ????public HandlerAdapter initRequestMappingHandlerAdapter() { ???????//创建RequestMappingHandlerAdapter适配器 ???????RequestMappingHandlerAdapter rmhd = new RequestMappingHandlerAdapter(); ???????//HTTP JSON转换器 ???????MappingJackson2HttpMessageConverter ?jsonConverter ????????????= new MappingJackson2HttpMessageConverter(); ???????//MappingJackson2HttpMessageConverter接收JSON类型消息的转换 ???????MediaType mediaType = MediaType.APPLICATION_JSON_UTF8; ???????List<MediaType> mediaTypes = new ArrayList<MediaType>(); ???????mediaTypes.add(mediaType); ???????//加入转换器的支持类型 ???????jsonConverter.setSupportedMediaTypes(mediaTypes); ???????//往适配器加入json转换器 ???????rmhd.getMessageConverters().add(jsonConverter); ???????return rmhd; ???} ???????// ???@Override// ???public Executor getAsyncExecutor() {// ???????ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();// ???????taskExecutor.setCorePoolSize(5);// ???????taskExecutor.setMaxPoolSize(10);// ???????taskExecutor.setQueueCapacity(200);// ???????taskExecutor.initialize();// ???????return taskExecutor;// ???}}
WebConfig类
原文地址:https://www.cnblogs.com/YUJIE666/p/10336549.html