2016-05-25 6 views
4

Мой репозиторий Spring Spring (развернутый в базе данных Oracle) находится в другой схеме, так что мне нужно добавить имя схемы.Префикс прейскурантной табличной таблицы при использовании конфигурации Java

При использовании конфигурации XML, это было бы легко сделать:

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

Однако, как я использую Java Config, это оказывается более сложным. Лучшее решение, которое я нашел, чтобы мой класс Java Config extend DefaultBatchConfigurer и переопределить метод createJobRepository():

@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(); 
    } 
... 
} 

сравнению с решением XML, это довольно много кода! И это не слишком логично, либо - моя первая догадка обеспечить @Bean метод следующим образом:

@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(); 
} 

, но это не будет работать.

Мой вопрос: Является ли мое решение оптимальным или есть лучший? Я бы предпочел определить Bean вместо того, чтобы переопределить некоторый метод некоторого класса, который не очень интуитивно понятен ... И, очевидно, было бы еще лучше, если бы мы могли сократить код, чтобы быть несколько близким к однострочному коду в конфигурации XML.

ответ

3

Просто добавьте эту строку в любой из ваших свойств файлов, зарегистрированных на вас конфигурацию пакетной:

spring.batch.table-prefix= GFA.BATCH_ 

FYI, префикс spring.batch отображается с org.springframework.boot.autoconfigure.batch.BatchProperties снабженным Spring ботинком. См. Исходный код on github.