首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在实现Runnable的类中调用存储库时出现空指针异常

在实现Runnable的类中调用存储库时出现空指针异常
EN

Stack Overflow用户
提问于 2022-08-18 07:28:46
回答 1查看 144关注 0票数 0

我有一个项目,其中有一个用例,在这个用例中,一个用户预订一个会议,假设上午10点到11点与另一个用户在一起。现在,在后端,我想检查上午11点会议是否进行顺利。

为此,我使用的是预定的未来和运行。无论何时预订会议,我都会使用相关的会议结束时间cron expression..which创建一个预定的未来,但问题是我无法访问存储库或运行函数中的任何服务,这是必要的。我得到了一个Null指针异常

下面是使用端点触发的meetingService代码之一

代码语言:javascript
复制
public String createMeetingSchedulerJobs(){
        BookingDetails booking = repBooking.findAll().get(0);

        //create completion check job
        String[] dateParts = booking.getDateOfMeeting().split("/");
        TaskDefinition taskDefinition = new TaskDefinition();
        taskDefinition.setData(booking.getMeetingId());
        taskDefinition.setActionType(TaskDefinitonType.MEETING_COMPLETION);
        taskDefinition.setCronExpression(miscUtils.generateCronExpression(parseInt(dateParts[0]),parseInt(dateParts[1]),booking.getEndTimeHour(),booking.getEndTimeMinute(),0));
        taskDefinitionBean.setTaskDefinition(taskDefinition);
        taskDefinitionBean.setMiscUtils(miscUtils);
        return taskSchedulerService.scheduleATask(taskDefinition);
    }

相关的schedulerService代码

代码语言:javascript
复制
 public String scheduleATask(TaskDefinition taskDefinition){
        String jobId = UUID.randomUUID().toString();
        taskDefinition.setId(jobId);
        TaskDefinitionBean taskDefinitionBean = new TaskDefinitionBean();
        taskDefinitionBean.setTaskDefinition(taskDefinition);
        Runnable tasklet = taskDefinitionBean;
        ScheduledFuture<?> scheduledTask = taskScheduler.schedule(tasklet, new CronTrigger(taskDefinition.getCronExpression(), TimeZone.getTimeZone(TimeZone.getDefault().getID())));
   
        jobsMap.put(jobId, scheduledTask);
        return jobsMap.toString();
    }

示例服务

代码语言:javascript
复制
@Service
public class MiscellaneousUtils {
    public String returnHello(){
        return "Hello there ~";
    }
}

TaskDefinitionBean.class

代码语言:javascript
复制
@Configurable
@Service
public class TaskDefinitionBean implements Runnable{
    private TaskDefinition taskDefinition;

    private MiscellaneousUtils miscUtils;

    private BeanFactory beanFactory;

    @Override
    public void run() {
        miscUtils = beanFactory.getBean(MiscellaneousUtils.class);
    }

    public TaskDefinition getTaskDefinition(){
        return taskDefinition;
    }
    public void setTaskDefinition(TaskDefinition taskDefinition){
        this.taskDefinition=taskDefinition;
    }
    public void setMiscUtils(MiscellaneousUtils miscUtils){this.miscUtils=miscUtils;}
}

我在TaskDefinitionBean.class中尝试过不同类型的依赖注入,但没有成功。我知道有许多相关的和有洞察力的问题是相似的,但仍然不能使用这种方法。

我得到的错误是:

代码语言:javascript
复制
java.lang.NullPointerException: null
    at fG.Service.TaskDefinitionBean.run(TaskDefinitionBean.java:38) ~[classes/:na]
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93) [spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514) [na:na]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [na:na]
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:299) [na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) [na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) [na:na]
    at java.base/java.lang.Thread.run(Thread.java:844) [na:na]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 07:48:32

为了使依赖注入工作,必须在spring之前创建bean,您可以手动创建它。

代码语言:javascript
复制
TaskDefinitionBean taskDefinitionBean = new TaskDefinitionBean();

所以beanFactorynull

您可以在服务中自动访问beanFactory并将其传递给TaskDefinitionBean

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

https://stackoverflow.com/questions/73399024

复制
相关文章

相似问题

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