質問

I am new to spring batch so appreciate the help. So far I have two spring batch jobs. Both of them have an item reader(sqls select) and an item writer(sql insert).

They look like this...

<job id="job-daily-tran-counts" xmlns="http://www.springframework.org/schema/batch">
    <step id="job-daily-tran-counts-step1">
        <tasklet>
            <chunk 
                reader="dailyTranCountJdbcCursorItemReader" 
                writer="dailyTranCountItemWriter" 
                commit-interval="1000" />
        </tasklet>
    </step>
</job>

Now I want to write a simple batch job to execute a method inside one of my managers which refreshes the cache of a number of list of value maps. An item reader and item writer does not really fit in I think. How should I structure this batch job?

To be more specific I have a class named LovManagerImpl and I need to execute the afterPropertiesSet method from spring batch. What's the best way to do that?

public class LovManagerImpl implements LovManager,InitializingBean {

    /**
     * The list of values data access object factory
     */
    @Autowired
    public LovDaoFactory lovDaoFactory;

    /* (non-Javadoc)
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
     */
    public void afterPropertiesSet() throws ReportingManagerException {
        Map<String,LovDao> lovDaoMap = lovDaoFactory.getLovDaoMap();
        for (Map.Entry<String,LovDao> entry : lovDaoMap.entrySet()){         
            String code = (String)entry.getKey();
            LovDao dao = (LovDao)entry.getValue();
            dao.getLov(code);
        }   
    }

thanks

役に立ちましたか?

解決

Use a Tasklet; please refer to Can we write a Spring Batch Job Without ItemReader and ItemWriter answer.
For your specific case - reuse of existing service method - use a MethodInvokingTaskletAdapter.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top