java - 需要从 Spring MVC 中的预定方法返回值

标签 java spring scheduled-tasks

我在我的网络应用程序中编写调度程序用于通知目的,我的调度程序的任务很简单,它将访问第三方集中数据库并查找数据的可用性,如果数据可用则返回 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/

相关文章:

java - Spring 3.0 依赖注入(inject)的最小 JAR

java - 使用 spring restTemplate 对 REST API 进行基本身份验证

java.lang.IllegalStateException : When using WebSecurityConfigurerAdapter

ruby-on-rails - 在主网络进程中运行delayed_job

ruby-on-rails - Rails 中的动态作业调度

java - 通过用户设置更改应用程序中特定文本的字体

java - 在 netbeans 中着色 jtable 行

java - 如何在没有任何请求、 session 等的情况下获取上下文?

java - 如何在java中验证上传的文件

java - 将 Spring tx 与任务混合