Spring boot异步方法的定义与调用

年爸 1年前 ⋅ 1302 阅读

说明:以前有类似需求的话需要定义线程池之类的等等很是麻烦,然而用了Spring boot之后发现非常简单,2个标签就搞定了!小小高兴一下!

1、定义@Async标签的异步方法

# Spring boot方法加入@Async标签后,此方法就变成了异步方法

package com.xxx.project.core.framework.task;

import com.xxx.project.system.business.CollectdConfBusiness;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * Task:异步任务(异步线程方法)
 *
 * @author 年爸
 * @QQ     526704425
 * @version 1.0
 * @date    2019-09-02
 */
@Service
public class TaskServer {

    /**
     * Business:collectd.conf文件操作(此处根据个人业务而定)
     */
    @Autowired
    private CollectdConfBusiness collectdConfBusiness;

    @Async
    public void doTask4Collectd() throws Exception {
        // 异步方法处理逻辑(此处根据个人业务而定)
        collectdConfBusiness.uploadConf4StaticData();
    }
}

 

2、Application类中加入@EnableAsync标签

# 加入@EnableAsync标签后,Spring boot就可以识别@Async标签的方法了

package com.xxx.project;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableAsync;

@SpringBootApplication
@EnableAsync // 加入此标签后,Spring boot就可以识别@Async标签的异步方法了
public class MonitorApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }

    // 继承SpringBootServletInitializer 实现configure 方便打war 外部服务器部署。
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MonitorApplication.class);
    }
}

 

3、异步方法调用

/**
 * Task:异步任务(引入异步任务对象)
 */
@Autowired
private TaskServer taskServer;

// 方法调用(在需要调用异步方法逻辑的地方调用定义的异步方法)
// 异步任务:修改collectd.conf文件(此处根据个人业务而定)
taskServer.doTask4Collectd();


容易吧?O(∩_∩)O哈哈~!!!


全部评论: 0

    我有话说: