進公司後,上頭安排了一個自動任務的開發,大概就是有一個自動任務,然後還有一個分任務,主任務與分任務中間通過zhu外鍵關聯。
本來自動任務的直接使用反射就可以實現,不過卻需要傳遞參數。通過百度最終解決了。做一個總結,避免忘記。
主任務的代用代碼:
//根據路徑獲取類信息
Class classSchedule = Class.forName(scheduleClass);
//根據參數獲取類的構造函數
Constructor css = classSchedule.getConstructor(String.class);
//執行反射
Runnable obj = (Runnable) css.newInstance(RunningCd);
其中 css.newInstance(RunningCd) 會直接代用 反射類帶有參數的構造方法。如下面的代碼
public BsdSheduleRunningSqlController(String runningCd){
this.runningCd = runningCd;
}
// 自動任務控制器
@Override
public void run() {
System.out.println(runningCd+"");
System.out.println("第一次查找");
List<BsdSheduleRunningSql> bsdSheduleRunningSqlList = findRunningSQLByRunningCd(runningCd);
if(bsdSheduleRunningSqlList.size()>0){
for(BsdSheduleRunningSql bsSql:bsdSheduleRunningSqlList){
System.out.println("第二次執行");
SheduleRunningMothd(bsSql.getRunningSql());
}
}else{
System.out.println("沒有需要的執行任務");
}
}
該自動任務業務的部分代碼,真正闡述的並不是自動任務,而是反射技術傳遞參數的應用。
畢竟 不同的框架定義的自動任務方式並不是一樣的。有興趣的同志們可以看一下不同框架的自動任務實現。