我在我的网络应用程序中编写调度程序用于通知目的,我的调度程序的任务很简单,它将访问第三方集中数据库并查找数据的可用性,如果数据可用则返回 true,否则返回 false。
但是我被困在这里,我想根据调度程序返回的结果(真/假)显示通知,但我无法思考,如何实现相同的效果?我想到了在session中绑定(bind)变量,但由于时间已到,所以这里的session是不可能的。
假设调度程序返回 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...
}
然后创建一个 Controller ,它将从数据库获取数据(如果存在,请注意Optional
接口(interface) - 您可以在DAO
方法中使用它)
// a rest controller
@RestController
@RequestMapping("/someData")
public class SomeController {
@Autowired
private SomeDataDAO someDataDAO;
@GetMapping
public SomeData getSomeData() {
return someDataDao.getSomeData().orElse(null);
}
}
现在,在您的前端中,您可以执行一些 AJAX 调用,具体取决于您在那里使用的内容,然后您可以进行检查并打印消息。
关于java - 需要从 Spring MVC 中的预定方法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053329/