Мой репозиторий 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.