WebConfig类

 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     
70 //    @Override
71 //    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就会启动这个任务池的一条线程去运行对应的方法,这样便能执行异步了。
//@EnableAsync
public 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;
//    }
}
原文地址:https://www.cnblogs.com/YUJIE666/p/10336549.html