Вставьте значение этого поля непосредственно в "studentStepOne", единственный метод, который его использует - PullRequest
0 голосов
/ 04 июня 2019

Я разработал Spring Boot-Batch код и sonarlint/Sonar-Qube, что выдает ошибку ниже.Я прошел по ссылке, но решение по этой ссылке не понимается: https://rules.sonarsource.com/java/tag/spring/RSPEC-3305.

Вставьте значение этого поля непосредственно в "studentStepOne", единственный метод, который его использует.

Код:

@Configuration
@PropertySource("classpath:application.properties")
public class StudentJob {
    @Value( "${spring.chunk.size}")
    private String chunkSize;

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Autowired
    private JdbcCursorItemReader<Student> StudentReader;

    @Autowired
    private ItemProcessor<Student, Student> StudentProcessor;

    @Autowired
    private StudentWriter StudentWriter;

    @Bean
    public StudentStepExecuListner StudentStepExecuListner() {
        return new StudentStepExecuListner();
    }

    @Bean("readStudentJob")
    @Primary
    public Job readStudentJob() {
        return jobBuilderFactory.get("readStudentJob")
                .incrementer(new RunIdIncrementer())
                .start(StudentStepOne())
                .build();
    }

    @Bean
    public Step StudentStepOne() {
        return stepBuilderFactory.get("StudentStepOne")
                .<Student, Student>chunk(Integer.parseInt(chunkSize))
                .reader(StudentReader)
                .processor(StudentProcessor)
                .writer(StudentWriter)
                .listener(StudentStepExecuListner())
                .build();
    }
}

1 Ответ

1 голос
/ 04 июня 2019

Судя по ссылке, это говорит само за себя:

Это означает использование параметра ввода вместо поля для зависимости, которые используются только в одном методе @Bean.

Так что для вашей работы, создайте его так:

  @Bean("readStudentJob")
  @Primary
  public Job readStudentJob(Step StudentStepOne) {
      return jobBuilderFactory.get("readStudentJob")
              .incrementer(new RunIdIncrementer())
              .start(StudentStepOne)
              .build();
  }

Не имеет отношения, но вы должны следовать соглашениям Java. Методы должны использовать верблюд. StudentStepOne() должно быть studentStepOne()

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