springtask添加总控开关实现

利用SpringAop功能通过对注解监控实现,上代码
1.增加配置application.properties
spring.task.auto=false
2.增加Aspect实现类

package com.spring.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class TimeAspect {

	Logger log = LoggerFactory.getLogger(TimeAspect.class);
	String methodName; //方法名
	private ThreadLocal<Long> startTime = new ThreadLocal<Long>(); //开始时间
	
	@Value(value="${spring.task.auto}")
	private boolean auto;


	@Around("@annotation(schedule)")  
	public void cached(final ProceedingJoinPoint pjp, Scheduled schedule) throws Throwable {
		startTime.set(System.currentTimeMillis());
		if(auto){
			pjp.proceed();
		}else{
			log.info("任务关闭");
		}
	}
	public boolean isAuto() {
		return auto;
	}

	public void setAuto(boolean auto) {
		this.auto = auto;
	}
	
	
}

3.原理解读
通过spring注入配置文件参数auto,利用Aspect进行切面,@Around("@annotation(schedule)") 实现监控注解Scheduled 的调用,从而实现对Task任务的控制运行。

发布了9 篇原创文章 · 获赞 2 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览