需要从 Spring MVC 中的调度方法返回值



我正在我的 Web 应用程序中编写调度程序用于通知目的,我的调度器的任务很简单,它将命中第三方集中式数据库并查找数据的可用性,如果数据可用,则返回 true 否则为 false。

但是我被困在这里,我想根据调度程序返回的结果(真/假(显示通知,但我无法思考,我该如何实现相同的?我想在会话中绑定变量,但因为是时间,所以在这里不可能会话。

假设调度程序返回 true,现在我希望在我的 JSP 页面(仪表板页面(中使用此值,我可以在其中显示用户仪表板中的"数据可用"消息。我需要这个值来检查条件

if(true)
"data is available"
else
no notification

请查看我的代码并建议我。

package com.awzpact.uam.scheduler;
import com.awzpact.prayas.dao.HRMSPickSalaryDataDAO;
import com.awzpact.uam.domain.SalaryDetailReport;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class PayrollDataNotificationScheduler {
private static  boolean AVAIL_STATUS = false;
private static final Logger LOGGER = Logger.getLogger(PayrollDataNotificationScheduler.class);
public boolean checkDataAvailability() {
try {
List<SalaryDetailReport> list = salaryDataDAO.findAll();
if (list.size() > 0) {
AVAIL_STATUS = true;
return AVAIL_STATUS;
}
return false;
} catch (Exception e) {
e.printStackTrace();
LOGGER.info("Data is not available for migrate");
return false;
}
}
@Autowired
HRMSPickSalaryDataDAO salaryDataDAO;
}

如果检索到了一些数据,您可以定期运行计划任务 - 将其保存到数据库中。

// in your scheduled @Component
@Autowired
private SomeDataDAO someDataDAO;
@Scheduled(cron = "...")
public void fetchThirdPartyData() {
SomeData thirdPartyData = getThirdPartyData();
someDataDAO.save(thirdPartyData);
}
private SomeData getThirdPartyData() {
// calling their API...
}

然后你创建一个控制器,它将从db获取数据(如果存在,请注意Optional接口 - 你可以在你的DAO方法中使用它(

// a rest controller
@RestController
@RequestMapping("/someData")
public class SomeController {
@Autowired
private SomeDataDAO someDataDAO;
@GetMapping
public SomeData getSomeData() {
return someDataDao.getSomeData().orElse(null);
}
}

现在,在您的正面,您可以执行一些 AJAX 调用,具体取决于您在那里使用的内容,然后您可以进行检查并打印消息。

调度意味着您希望按计划执行一些操作。 等待响应看起来更像是客户端和服务器之间的请求/响应通信。 要检查数据是否可用 - 最好通过 REST 控制器使用简单的方法调用,并且根本不使用调度程序。

最新更新