ClassCastException вызывается приведением JobRepositoryFactoryBean к JobRepository, когда загрузка Spring запускает пакетное задание - PullRequest
0 голосов
/ 26 сентября 2019

Вызвано: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [org.springframework.batch.core.configuration.annotation.JobBuilderFactory]: метод фабрики - исключение типа jobBuilders;Вложенное исключение - java.lang.ClassCastException:

org.springframework.batch.core.repository.support.JobRepositoryFactoryBean $$ EnhancerBySpringCGLIB $$ ba801bb9

. может быть передан в.core.repository.JobRepository в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:185) в org.springframework.beans.factory.support.ConstructorResolver.jstanti6 (ConstructorResolver.jstanti)18 общих пропущенных фреймов. Причины: java.lang.ClassCastException: org.springframework.batch.core.repository.support.JobRepositoryFactoryBean $$ EnhancerBySpringCGLIB $$ ba801bb9 не может быть приведен к org.springframeworkreposit.rec.springframework.: 59) at org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration $$ EnhancerBySpringCGLIB $$ 9641e37a.CGLIB $ jobBuilders $ 8 () в org.springframework.batch.core.confBBegBBBB$$ FastClassBySpringCGLIB $$ 19e6f1ca.invoke () в org.springframework.cglib.proxy.MethodProxy.invokeSuper (MethodProxy.java:244) в org.springframework.context.annotation.Confance_jjat org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration $$ EnhancerBySpringCGLIB $$ 9641e37a.jobBuilders ()


Попытка запустить пакетное задание с помощью Spring Boot 1011

Пытался сделать AJobConfig подклассом DefaultBatchConfigurer, но на самом деле он не работает.каким-то образом эта ошибка возникает независимо от того, добавляется ли @EnableBatchProcessing или нет.Попытался добавить @EnableBatchProcessing в MyApp.java и AJobConfig.java.

Буду признателен, если кто-нибудь может помочь указать, явно ли я что-то упустил?

Я использую Spring boot 2.1.8, Spring batch 4.1.2, Spring 5.1.6


@Configuration
public class BatchJobConfig {

    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public JobExecutionListener myJobListener() {
        return new MyJobExecutionListener();
    }

}

@Configuration
public class MyJobConfig extends MyAbstractJobConfig {

    @Override
    @Bean
    public String jobName() {
        return "MYJOB";
    }

    @Bean("MYJOB")
    public Job myJob() {
        return newJobBuilder() //
                .next(parms01Step())
                .build();

    }

    @Bean("PARMS01")
    public Step parms01Step() {
        return newStepBuilder("PARMS01") //
                .execute(Cblparmc.class, "zzzzz") //
                .build();
    }
}

batch-context.xml ничего не делает, только определяет заполнитель

<context:property-placeholder location="classpath:/config/my-batch*.properties"/>

В AbstractMyJobConfig есть автоматические компоненты, но ничего особенного

@Autowired
protected JobBuilderFactory jobBuilderFactory;

@Autowired
protected StepBuilderFactory stepBuilderFactory;

1 Ответ

0 голосов
/ 30 сентября 2019

Я наконец понял, что вызвало проблему, прочитав пару раз ссылку ниже. Исключение конфигурации Spring Batch

Проблема в том, что в определении bean-компонента xml есть имя jobRepository (batch: job-repository).С @EnableBatchProcessing я считаю, что это не обязательно.Кроме того, это может вызвать проблемы с автоматической настройкой загрузки Spring?

Удаление определения компонента решит описанную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...