gpt4 book ai didi

java - Spring boot中的执行流程

转载 作者:行者123 更新时间:2023-12-02 08:43:11 24 4
gpt4 key购买 nike

刚接触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 实例并加载 bean。

我试图弄清楚什么是代码流(逐步执行)。然后在不同的地方设置记录器后,发现BatchConfiguration类方法是按顺序执行的,并且它也涵盖了整个代码的执行。

检查了这个类,它的开头有两个标签@Configuration、@EnableBatchProcessing。正确的理解是,一旦 SpringApplication.run 完成,spring-boot 会查找带有 @Configuration、@EnableBatchProcessing 标签的类并处理那里的所有内容?这是一个司机级别吗?

如果上述理解正确,那么我们可以在一个 spring-boot 应用程序中拥有多少个这种类型(BatchConfiguration)的类?如果不止一个,那么流量会是多少?

最佳答案

几点。

  • SpringApplication.run(Application.class, args) 将扫描 Application.class 同一包或以下包中的所有类,初始化 applicationContext 中的所有 Bean 并调度应用程序事件。
  • 带有 @Configuration 的类用于定义 bean。 Bean 将被重新排序以允许 Bean 之间存在依赖关系,并且每个 Bean 将使用其 @Bean 注释方法进行初始化。
  • @EnableBatchProcessing 只需要位于一个 @Configuration 类上。它将自动配置更多可用作依赖项的 bean,例如 jobBuilderFactory 和 stepBuilderFactory 以及 jobLauncher。 jobLauncher 将依赖于所有“Job”类型的 bean,因此它将最后初始化。
  • 每个 bean 都可以通过实现某个接口(interface)来监听 applicationEvents,并为其定义响应。 jobLauncher 将监听“应用程序已启动”事件,并通过在主线程上执行其所有作业或使用线程池(如果已定义)执行其所有作业来进行响应。

参见BatchAutoConfiguration关于如何配置自动配置 bean 的行为。

关于java - Spring boot中的执行流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61248736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com