gpt4 book ai didi

java - Spring Batch 从监听器类调用 DAO 类

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:08 25 4
gpt4 key购买 nike

我对 Spring 很陌生。我正在使用 Spring Batch 来执行作业。我已经配置了一切并且工作正常。但我有一个问题。从 xml 配置中,我调用 JobListener 类来更新批量启动信息。

从 xml 配置中,我可以调用 JobListener 并初始化数据源和 jobID。但我需要从 JobListener 类调用名为 JobDAO 的类来插入批处理状态。是否可以在 xml 中进行配置,或者我需要为 JobDAO 类创建对象并调用它。

很抱歉问这样的问题。请金迪帮助我。

<batch:job id="txn-det" >
<batch:step id="step1">
// Item reader & Item writer
</batch:step>
<batch:listeners>
<batch:listener ref="jobListener" />
</batch:listeners>
</batch:job>

<bean id="jobListener" class="com.JobListener" >
<property name="dataSource" ref="dataSource"/>
<property name="jobID" value="TXN01"/>
</bean>

JobListener.java

public class JobListener implements JobExecutionListener {

@Autowired
DataSource dataSource;
String jobID = null;

@Autowired
JobDAO jobDAO = null;

@Autowired
public void setDataSource(DataSource dataSource){
this.dataSource = dataSource;
}

public void setjobID(String jobID) {
this.jobID = jobID;
}

@Override
public void beforeJob(JobExecution jobExecution) {
startTime = new Date();
System.out.println("Job starts at :"+startTime);
// TODO Call DAO to insert Job status
jobDAO.logJobStatus(); // Null pointer is throwing here

}

@Override
public void afterJob(JobExecution jobExecution) {
}
}

最佳答案

像这样尝试一下。

在JobListener.java中

@Autowired
JobDAO jobDAO = null;

@Override
public void beforeJob(JobExecution jobExecution) {
startTime = new Date();
System.out.println("Job starts at :"+startTime);
jobDAO.log()

}

来自 XML 配置:

<bean id="jobListener" class="com.JobListener" >
<property name="dataSource" ref="dataSource"/>
<property name="jobID" value="TXN01"/>
<property name="jobDAO" ref="jobDAO" />
</bean>

<bean id="jobDAO" class="com.JobDAO" />

关于java - Spring Batch 从监听器类调用 DAO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com