복붙노트

[SPRING] 봄 부팅 spring.batch.job.enabled = false 인식 할 수 없습니다.

SPRING

봄 부팅 spring.batch.job.enabled = false 인식 할 수 없습니다.

jar 파일을 실행할 때 application.properties에서 spring.batch.job.enabled = false를 시도하고 -Dspring.batch.job.enabled = false를 시도했습니다.

그러나 @EnableBatchProcessing은 응용 프로그램 시작시 자동으로 일괄 작업 실행을 시작합니다. 어떻게 그런 시나리오를 디버깅 할 수 있습니까?

TestConfiguration.class

@Configuration
@EnableBatchProcessing
public class TestConfiguration {...}

나는 신청한다.

@ComponentScan("com.demo")
@EnableAutoConfiguration
public class MainApplication {
public static void main(String[] args) throws BeansException, JobExecutionAlreadyRunningException, JobInstanceAlreadyCompleteException, JobParametersInvalidException, InterruptedException, JobRestartException {

ConfigurableApplicationContext ctx = SpringApplication.run(TestConfiguration.class, args);
...}

pom.xml 나는 부모로서가 아니라 스프링 부트로서 의존성을 사용하고있다.

<dependencyManagement>
    <dependencies>
        <!-- Import dependecy for spring boot from here-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.2.4.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

해결법

  1. ==============================

    1.내가 무슨 일이 벌어지고 있는지 알 수 있었고, 커스텀 리더 / 프로세서 / 작가를 사용하고있다. springboot 응용 프로그램이 시작될 때 실제로 일부 응용 프로그램 논리를 작성한이 사용자 정의 콩 빈의 종속성 주입을 시도합니다.

    내가 무슨 일이 벌어지고 있는지 알 수 있었고, 커스텀 리더 / 프로세서 / 작가를 사용하고있다. springboot 응용 프로그램이 시작될 때 실제로 일부 응용 프로그램 논리를 작성한이 사용자 정의 콩 빈의 종속성 주입을 시도합니다.

    ** TestConfiguration.class **

        @Configuration
        @EnableBatchProcessing
        public class TestConfiguration {
    
            @Bean
            @Conditional(Employee.class)
            public ItemWriter<Employee> writer_employee(DataSource dataSource) throws IOException {
                FlatFileItemWriter<Employee> writer = new FlatFileItemWriter<Employee>();
                writer.setResource(new FileSystemResource(FinanceReportUtil.createFile("Employee.csv")));
                writer.setHeaderCallback(new FlatFileHeaderCallback() {
                    @Override
                        public void writeHeader(Writer writer) throws IOException {
                        writer.write("id, name");
                     }
                 });
                DelimitedLineAggregator<Employee> delLineAgg = new DelimitedLineAggregator<Employee>();
                delLineAgg.setDelimiter(",");
                BeanWrapperFieldExtractor<Employee> fieldExtractor = new BeanWrapperFieldExtractor<Employee>();
                fieldExtractor.setNames(new String[]{"id", "name"});
                delLineAgg.setFieldExtractor(fieldExtractor);
                writer.setLineAggregator(delLineAgg);
                return writer;
            }
    
            @Bean
            @Conditional(Manager.class)
            public ItemWriter<Person> writer_manager(DataSource dataSource) throws IOException {
    
                // Does the same logic as employee
            }
    
            // Also has job and step etc.
        }
    

    spring.batch.job.enabled = false로 파일을 생성 할 것입니다.이를 극복하기 위해 아래에 콩을 주입 할 사용자 정의 로직을 만들었습니다.

    application.properties

    # all, manager, employee
    person=manager
    

    ManagerCondition.class

    public class ManagerCondition implements Condition {
    
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String person= context.getEnvironment().getProperty("person");
        return person.equals("manager");
    
    }
    
  2. ==============================

    2.나 또한 같은 문제에 직면했다. 속성 'spring.batch.job.enabled = false'는 시작할 때 속성 파일에서 이것을 인식 할 때 인식하지 못했다. 일괄 처리가 시작되기 전에 속성이 컨텍스트에로드되지 않았기 때문일 수 있습니다.

    나 또한 같은 문제에 직면했다. 속성 'spring.batch.job.enabled = false'는 시작할 때 속성 파일에서 이것을 인식 할 때 인식하지 못했다. 일괄 처리가 시작되기 전에 속성이 컨텍스트에로드되지 않았기 때문일 수 있습니다.

    그래서 standalone.xml에서 아래와 같은 시스템 속성으로 'spring.batch.job.enabled = false'속성을 설정했습니다.

    <system-properties>  
            <property name="spring.batch.job.enabled" value="false"/>  
    </system-properties>  
    

    이것으로 SUCCESSFULLY는 작업을 시작했고 스프링 배치 작업은 서버 시작시 초기화되지 않았습니다.

    시스템 속성은 standalone.xml의 extensions 태그 바로 뒤에 있어야합니다.

  3. from https://stackoverflow.com/questions/31276011/spring-boot-spring-batch-job-enabled-false-not-able-to-recognize by cc-by-sa and MIT license