美文网首页
从零搭建项目开发框架-20异步调用@Async

从零搭建项目开发框架-20异步调用@Async

作者: 孔垂云 | 来源:发表于2017-07-08 20:32 被阅读0次
    1. 何为异步调用?
      在解释异步调用之前,我们先来看同步调用的定义;同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。

      例如, 在某个调用中,需要顺序调用 A, B, C三个过程方法;如他们都是同步调用,则需要将他们都顺序执行完毕之后,方算作过程执行完毕; 如B为一个异步的调用方法,则在执行完A之后,调用B,并不等待B完成,而是执行开始调用C,待C执行完毕之后,就意味着这个过程执行完毕了。

    2. 常规的异步调用处理方式

      在Java中,一般在处理类似的场景之时,都是基于创建独立的线程去完成相应的异步调用逻辑,通过主线程和不同的线程之间的执行流程,从而在启动独立的线程之后,主线程继续执行而不会产生停滞等待的情况。

    3. @Async介绍

      在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。
      该项目中登录时记录登录日志就可以异步调用了。

    1、如何在Spring中启用@Async

    基于Java配置的启用方式:

    @Configuration  
    @EnableAsync  
    public class SpringAsyncConfig { ... }  
    

    基于XML配置文件的启用方式,配置如下:

    <task:executor id="myexecutor" pool-size="5"  />  
    <task:annotation-driven executor="myexecutor"/>  
    

    2、异步新增登录日志

    @Service
    @Configuration
    @EnableAsync
    public class SysLoginService {
        @Autowired
        private SysUserLoginDao sysUserLoginDao;
    
        /**
         * 登录时新增登录信息,异步处理
         *
         * @param sysUserLogin
         * @return
         */
        @Async
        public void add(SysUserLogin sysUserLogin) {
            sysUserLoginDao.add(sysUserLogin);
        }
    
    }
    

    这里要掌握的就是一定要加上@Configuration @EnableAsync这两个注解,不然单单加@Async是不起作用的。

    源码下载

    本阶段详细源码

    相关文章

      网友评论

          本文标题:从零搭建项目开发框架-20异步调用@Async

          本文链接:https://www.haomeiwen.com/subject/jsrrhxtx.html