2016-05-25 17 views
4

Mein Spring Batch-Repository (bereitgestellt in einer Oracle-Datenbank) liegt in einem anderen Schema, so dass ich den Schemanamen voranstellen muss.Spring Batch-Tabellen-Präfix bei Verwendung von Java Config

Wenn XML-Konfiguration verwenden, das wäre einfach zu tun:

<job-repository id="jobRepository" table-prefix="GFA.BATCH_" /> 

Aber, wie ich Java Config verwenden, dies erweist sich als komplizierter zu sein. Die beste Lösung, die ich gefunden ist meiner Java Config Klasse extend DefaultBatchConfigurer haben und überschreiben die createJobRepository() Methode:

@Configuration 
@EnableBatchProcessing 
public class BatchConfiguration extends DefaultBatchConfigurer{ 
    @Autowired 
    private DataSource dataSource; 

    @Autowired 
    private PlatformTransactionManager transactionManager; 

    @Override 
    protected JobRepository createJobRepository() throws Exception { 
     JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); 
     factory.setDataSource(dataSource); 
     factory.setTransactionManager(transactionManager); 
     factory.setTablePrefix("GFA.BATCH_"); 
     factory.afterPropertiesSet(); 
     return factory.getObject(); 
    } 
... 
} 

Im Vergleich zu der XML-Lösung, das ist ziemlich viel Code! Und es ist nicht zu logisch entweder - meine erste Vermutung ein @Bean Verfahren zu schaffen, war wie folgt:

@Bean 
public JobRepository jobRepository() throws Exception { 
    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); 
    factory.setDataSource(dataSource); 
    factory.setTransactionManager(transactionManager); 
    factory.setTablePrefix("GFA.BATCH_"); 
    factory.afterPropertiesSet(); 
    return factory.getObject(); 
} 

aber das würde nicht funktionieren.

Meine Frage ist: Ist meine Lösung optimal oder gibt es eine bessere? Ich würde es vorziehen, eine Bean zu definieren, anstatt irgendeine Methode irgendeiner Klasse außer Kraft zu setzen, die nicht sehr intuitiv ist ... Und natürlich wäre es sogar besser, wenn wir den Code etwas in die Nähe des einzeiligen Codes verkürzen könnten die XML-Konfiguration.

Antwort

3

Fügen Sie einfach diese Zeile auf alle Ihre Eigenschaften Dateien auf Sie Batch-Konfiguration registriert:

spring.batch.table-prefix= GFA.BATCH_ 

FYI, das Präfix spring.batch mit org.springframework.boot.autoconfigure.batch.BatchProperties mit Federverschluß versehen abgebildet wird. Siehe Quellcode on github.

Verwandte Themen