Ошибка при вызове configprops, когда настроен весенний пакетный задание - PullRequest
0 голосов
/ 18 октября 2019

Я недавно обновил свое весеннее загрузочное приложение с 2.1.9 до 2.2.0 и столкнулся с проблемой. Когда я вызываю «configprops» из конечной точки привода, возникает исключение throw: область действия «задание» не активна для текущего потока

. Я воспроизвожу ошибку: https://github.com/guillaumeyan/bugspringbatch (просто запустите тест). Исходный проект взят из https://github.com/spring-guides/gs-batch-processing/tree/master/complete

Я пытался добавить:

  @Bean
  public StepScope stepScope() {
    final StepScope stepScope = new StepScope();
    stepScope.setAutoProxy(true);
    return stepScope;
  }

, но он не работает (с spring.main.allow-bean-definition-overriding = true)

Вот моя конфигурация весенней партии

  @Bean
  @JobScope
  public RepositoryItemReader<DossierEntity> dossierToDiagnosticReader(PagingAndSortingRepository<DossierEntity, Long> dossierJpaRepository, @Value("#{jobParameters[origin]}") String origin) {
    RepositoryItemReader<DossierEntity> diagnosticDossierReader = new RepositoryItemReader<>();
    diagnosticDossierReader.setRepository(dossierJpaRepository);
    diagnosticDossierReader.setMethodName("listForBatch");
    // doing some stuff with origin
    return diagnosticDossierReader;
  }
ExceptionHandlerExceptionResolver[199] - Resolved [org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'scopedTarget.dossierToDiagnosticReader': Scope 'job' is not active for the current thread; 
consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No context holder available for job scope]

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Исправлена ​​ошибка при загрузке пружины 2.2.1 https://github.com/spring-projects/spring-boot/issues/18714

0 голосов
/ 21 октября 2019

Я скачал ваш проект и смог воспроизвести случай. В вашем примере есть две проблемы:

  • Вы определяете bean-объект области действия в своем приложении, но JobScope не определен в вашем контексте (и вы не используете аннотацию @EnableBatchProcessing, которая добавляетэто автоматически к контексту). Если вы хотите использовать область задания без @EnableBatchProcessing, вам необходимо добавить его в контекст вручную.
  • Ваш тест не пройден, поскольку во время теста не выполняется задание. Бины в области заданий лениво создаются, когда задание действительно выполняется. Поскольку ваш тест не запускает задание, bean-компонент не может быть правильно проксирован.

Похоже, что ваш тест не тестирует пакетное задание, я исключил бы bean-объект области действия из контекста теста.

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