content: package me.flyray.rbac.utils;
  
  import java.lang.reflect.Method;
  
  import org.apache.commons.lang.StringUtils;
  import org.springframework.util.ReflectionUtils;
  
  /**
   * 执行定时任务
   * 
   * @author chenshun
   * @email sunlightcs@gmail.com
   * @date 2016年11月30日 下午12:49:33
   */
  public class ScheduleRunnable implements Runnable {
  	private Object target;
  	private Method method;
  	private String params;
  	
  	public ScheduleRunnable(String beanName, String methodName, String params) throws NoSuchMethodException, SecurityException {
  		this.target = SpringContextUtils.getBean(beanName);
  		this.params = params;
  		
  		if(StringUtils.isNotBlank(params)){
  			this.method = target.getClass().getDeclaredMethod(methodName, String.class);
  		}else{
  			this.method = target.getClass().getDeclaredMethod(methodName);
  		}
  	}
  
  	@Override
  	public void run() {
  		try {
  			ReflectionUtils.makeAccessible(method);
  			if(StringUtils.isNotBlank(params)){
  				method.invoke(target, params);
  			}else{
  				method.invoke(target);
  			}
  		}catch (Exception e) {
  			throw new RRException("执行定时任务失败", e);
  		}
  	}
  
  }
  