Процесс выполнения в Spring boot - PullRequest
0 голосов
/ 16 апреля 2020

Новое в spring-boot, проверенные онлайн примеры. Есть одно сомнение.

Главный класс вызова

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

Класс пакетной обработки

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

  --
  --
  so on

}

SpringApplication.run(Application.class, args) создает соответствующий экземпляр ApplicationContext и загружает компоненты.

Я пытался выяснить, что такое поток кода (пошаговое выполнение). Затем, после настройки регистратора в разных местах, выясните, что методы класса BatchConfiguration выполняются последовательно, и он также охватывает выполнение всего кода.

Проверял этот класс, он возглавляется этими двумя тегами @Configuration, @EnableBatchProcessing. Правильно ли понимать, что после завершения SpringApplication.run spring-boot ищет класс с тегами @Configuration, @EnableBatchProcessing и обрабатывает все оттуда? Это класс водителя?

Если вышеприведенное понимание верно, сколько классов этого типа (BatchConfiguration) мы можем иметь в одном приложении весенней загрузки? Если их больше одного, чем тогда будет поток?

1 Ответ

1 голос
/ 16 апреля 2020

Пара точек.

  • SpringApplication.run (Application.class, args) просканирует все классы в одном пакете или ниже Application.class, инициализирует все bean-компоненты в applicationContext и отправит события приложения.
  • Классы с включенной @Configuration предназначены для определения bean-компонентов. Компоненты будут переупорядочены, чтобы разрешить зависимости между компонентами, и каждый компонент будет инициализирован с использованием своего метода @ Bean-annotated.
  • @EnableBatchProcessing должен быть только в одном классе @Configuration. Он автоматически сконфигурирует больше bean-компонентов, которые вы можете использовать в качестве зависимостей, таких как jobBuilderFactory и stepBuilderFactory, и jobLauncher. JobLauncher будет иметь зависимости от всех bean-компонентов типа 'Job', поэтому он будет инициализирован последним.
  • Каждый bean-компонент может прослушивать applicationEvents путем реализации определенного интерфейса и определять для него ответ. JobLauncher будет прослушивать событие «приложение запущено» и отвечать, выполняя все его задания либо в основном потоке, либо с помощью пула потоков, если это было определено.

См. BatchAutoConfiguration о том, как можно настроить поведение автоматически настраиваемых bean-компонентов.

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