寻找资源以帮助了解Spring启动的工作原理

eri*_*223 1 document spring-boot

我最近在学习Spring boot,里面有太多的魔法.我发现大部分资源,包括官方网站,都专注于如何使用它,而不是解释它是如何工作的.有人可以分享这些资源吗?

更新:

也许我的描述引起了一些混乱(关闭投票),我实际上是在寻找以下问题的答案:

  1. 当boot在pom.xml中找到"org.springframework.boot:spring-boot-starter-web"时会发生什么?它是否将Tomcat lib jar添加到我的类路径中?是否会生成web.xml?(文件说启动不生成代码)
  2. 当boot找到"org.springframework.boot:spring-boot-starter-data-jpa"时会发生什么,会生成persistence.xml吗?如何根据pom.xml中的数据库驱动程序依赖项创建存储库实例?
  3. ...

Phi*_*ebb 9

Spring Boot根本不生成任何代码,所有配置都是以编程方式执行的.因此,例如,不会有web.xml用于配置servlet 的文件,而是使用servlet 3.0 API在代码中注册它们.

启动器POM提供了一种方便的方法来将jar添加到类路径中,但它们本身并不做任何事情.例如,spring-boot-starter-web将添加Tomcat和Spring MVC jar,spring-boot-starter-data-jpa将添加Hibernate和Spring Data JPA等.

一旦你的类路径上有相关的jar,Spring Boot就会尝试为你自动配置东西.当它启动时,它会查询META-INF/spring.factories文件以找到潜在的配置(这是一个例子).

依次尝试每个配置以查看是否可以应用它.配置使用@Condition注释来限制它们何时应用.例如,HibernateJpaAutoConfiguration仅在可以找到某些Hibernate类时才适用(参见此处).自动配置只是典型的Spring @Configuration类,因此您可以查看源代码以查看实际发生的情况.

参考文档(特别是附录B)也可能有所帮助.