2017-02-15 46 views
1

我對Spring很新。我正在使用spring批處理執行一項工作。我配置了一切,它工作正常。 但我有一個問題。從XML配置我打電話給JobListener類來更新批量啓動信息。彈簧批次從監聽器類調用DAO類

從XML配置我能夠能夠調用JobListener並初始化datasoure和jobID。但是我需要從JobListener類調用稱爲JobDAO的類來插入批處理狀態。 有沒有可能在xml中配置,或者我需要爲JobDAO類創建對象並調用它。

對不起,這種問題。 Kinldy幫助我。

<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) { 
    } 
} 

回答

0

試試看這樣。

在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" />