说明:以前有类似需求的话需要定义线程池之类的等等很是麻烦,然而用了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哈哈~!!!
注意:本文归作者所有,未经作者允许,不得转载