标签:return efi params 支持 comm ret isp aci tde
有两种情况,第一种是业务逻辑复杂,但不需要业务逻辑的结果,第二种是需要返回业务逻辑的处理结果
第一种比较简单,利用多线程处理业务逻辑,或者利用spring中@Asyn注解更简单,
使用@Asyn注解,要首先要配置开启异步注解
- @Configuration
- @EnableAsync
- public class AsyncConfig {
-
- }
- @Service
- public class AsyncAction {
-
- @Async
- public void fun1() {
- try {
- Thread.sleep(10000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println("fun1");
- }
- }
第二种需要返回业务逻辑情况则首先需要开启异步支持
- public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
- @Override
- protected void customizeRegistration(Dynamic registration) {
- registration.setAsyncSupported(true);
- }
或者在web.xml中开启
- <servlet>
- <servlet-name>SpringMvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>...</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- <async-supported>true</async-supported>
- </servlet>
- @Configuration
- @EnableWebMvc
- @ComponentScan("spittr.web")
- public class WebConfig extends WebMvcConfigurerAdapter {
-
- @Override
- public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
- ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
- executor.setCorePoolSize(5);
- executor.setMaxPoolSize(10);
- executor.setQueueCapacity(50);
- executor.setThreadNamePrefix("abc-");
- executor.setKeepAliveSeconds(30);
- configurer.setTaskExecutor(executor);
- configurer.setDefaultTimeout(600);
- }
- @Configuration
- @EnableWebMvc
- @ComponentScan("spittr.web")
- public class WebConfig extends WebMvcConfigurerAdapter {
- @RequestMapping(value = "/async")
-
- public @ResponseBody Callable<String> async() {
return new Callable<String>() { @Override public String call() throws Exception { Thread.sleep(2000); return "Callable result"; } };}
标签:return efi params 支持 comm ret isp aci tde
原文地址:https://www.cnblogs.com/jpfss/p/9329410.html