因此,首先,如果这似乎与其他问题相似,我们道歉-我已经看过,尝试过提出的解决方案,但没有一个解决了问题。首先是经过清理的代码...
package com.mine.batchMain;
@SpringBootApplication
@Configuration
public class MyApplication implements CommandLineRunner {
//...
public static void main(String[] args) {
//....
}
}
package com.mine.batchMain;
//...
import com.min.batchMain.firstSteps.FirstStepConfigHolder;
//...
@Configuration
@EnableBatchProcessing
public class BatchConfigurer {
//....
@Autowired
private FirstStepConfigHolder firstStep;
//...
@Bean
public Step defineFirstStep() {
return stepBuilder.get("First Step")
.chunk<MyPOJO, MyPOJO>(batchSize)
.readerfirstStep.fetcher())
.writer(firstStep.extracter())
.listener(firstStep.listen())
.build();
}
//....
}
package com.mine.batchMain.firstSteps;
//...
import com.mine.batchMain.common.MyRepo;
import com.mine.batchMain.firstSteps.DocFetcher;
//...
@Configuration
@EnableJPARepositories
public class FirstStepConfigHolder {
//....
@Value("${myapp.dbUrl}")
String dbUrl;
@Value("${myapp.dbSchema}")
String dbSchema;
@Value("${myapp.dbUser}")
String dbUser;
@Value("${myapp.encDbPass}")
String encryptDbPass;
@Value("${myapp.dbDriver}")
String dbDriver;
@Value("${myapp.maxDocSize}")
String maxDocSize;
@Value("${myapp.maxNumDocs}")
String maxNumDocs;
@Bean
public DocFetcher fetcher() {
log.trace("Creating DocFetcher.")
return new DocFetcher(myDb());
}
@Bean
public MyRepo myDb() {
log.trace("Creating repo.");
MyRepo retDb = new MyRepo(myDataSource());
retDb.setMaxNumDocs(Integer.valueOf(maxNumDocs));
retDb.setMaxDocSize(Integer.valueOf(maxDocSize));
log.debug("Confirming db class state:"+retDb.toString());
return retDb;
}
private DataSource myDataSource() {
DriverManagerDataSource retDs = new DriverManagerDataSource(dbUrl, dbUser, decrypt(encryptDbPass));
retDs.setDriverClassName(dbDriver);
return retDs;
}
}
这些问题/症状是: 1)MyRepo没有选择maxDocSize和maxNumDocs。 (记录显示默认值) 2)记录显示对“ Creating DocFetcher”的跟踪调用,但不显示对“ Creating repo。”的跟踪调用,也没有显示对Repo状态的调试。
令人沮丧的是,据我所了解和了解,应该将它们捡起来。我缺少什么和/或无法正确理解?
答案 0 :(得分:0)
确保您的 BatchConfigurer.java 文件应与 MainApplication.java 文件位于同一软件包中。
或
将 BatchConfigurer.java 导入您的 MainApplication.java 文件中。
检查该图像以供参考