首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要从Spring MVC中的scheduled方法返回值

需要从Spring MVC中的scheduled方法返回值
EN

Stack Overflow用户
提问于 2018-08-28 16:26:26
回答 2查看 2.1K关注 0票数 0

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

但是我被困在这里了,我想根据我的调度器返回的结果(true/false)来显示通知,但我不能思考,我如何实现相同的结果?我想在会话中绑定变量,但因为是时间,所以会话在这里是不可能的。

假设调度程序返回true,现在我希望JSP页面(仪表板页面)中包含这个值,这样我就可以在用户的仪表板中显示"Data is available“的消息。我需要这个值来检查条件

代码语言:javascript
运行
复制
if(true)
"data is available"
else
no notification

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

代码语言:javascript
运行
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 20:59:23

如果检索到某些数据,则定期运行计划任务-将其保存到数据库中。

代码语言:javascript
运行
复制
// 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方法中使用它)

代码语言:javascript
运行
复制
// a rest controller
@RestController
@RequestMapping("/someData")
public class SomeController {

    @Autowired
    private SomeDataDAO someDataDAO;

    @GetMapping
    public SomeData getSomeData() {
        return someDataDao.getSomeData().orElse(null);
    }

}

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

票数 2
EN

Stack Overflow用户

发布于 2018-08-28 16:40:12

计划是指您想要在计划的基础上进行一些操作。等待响应看起来更像是客户端和服务器之间的请求/响应通信。为了检查数据是否可用-最好是通过REST控制器使用简单的方法调用,而不是使用调度器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52053329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档