Springboot的理解和疑惑
迪丽瓦拉
2025-05-28 16:49:57
0

前言:大家都知道springboot的好处是,简化配置,一键启动,面试也总是问自动装配的原理,我们只有深刻理解装配原理才能以不变应万变。

目录

问题1:springboot 自动配置是如何 知道依赖的类存在不存在?

问题2: springboot-start-XXXX下META-INF的文件作用


问题1:springboot 自动配置是如何 知道依赖的类存在不存在?

在Spring Boot中,自动配置是通过类路径上的META-INF/spring.factories文件实现的。这个文件中列出了所有自动配置类的全限定类名。Spring Boot在启动时会扫描这些自动配置类,然后根据需要将它们应用到应用程序上下文中。

当您在项目中添加一个新的依赖时,例如在pom.xml文件中添加一个新的库,Spring Boot会扫描该库的类路径以查找META-INF/spring.factories文件。如果该文件存在,它将被读取并将其中列出的自动配置类加载到应用程序上下文中。

如果自动配置类依赖于其他类或库,但这些类或库不存在,或者没有正确配置,Spring Boot会在应用程序启动时抛出异常。因此,要确保自动配置类正常工作,必须正确配置依赖项并将它们添加到类路径中。

总的来说,Spring Boot的自动配置机制是基于类路径上的META-INF/spring.factories文件的。这个文件中列出了所有自动配置类的全限定类名。当您添加新的依赖时,Spring Boot会自动扫描该依赖的类路径以查找该文件,并将其中列出的自动配置类应用到应用程序上下文中。

扩展:所以,我们也了解到:如果发现jar包中的类是报错的,如:

那这个自动装配是肯定不会 自动装配的。 

问题2: springboot-start-XXXX下META-INF的文件作用

spring-autoconfigure-metadata.properties文件是Spring Boot自动配置元数据文件,用于描述Spring Boot自动配置类的元数据信息。这个文件包含一组键值对,每个键值对表示一个自动配置项的元数据信息,例如属性名称、属性类型、默认值、描述等等。

Spring Boot使用这个文件来帮助IDE(例如Eclipse、IntelliJ IDEA等)和其他工具(例如Spring Boot Actuator)了解自动配置类的信息

如:

org.springframework.boot.autoconfigure.condition.ConditionalOnProperty=\name,spring.datasource.url,\matchIfMissing=falseprefix=spring.datasource

spring-configuration-metadata.json文件是Spring Boot配置元数据文件,用于描述应用程序配置属性的元数据信息。这个文件包含了一组JSON格式的键值对,每个键值对表示一个配置属性的元数据信息,例如属性名称、属性类型、默认值、描述等等。

Spring Boot使用这个文件来帮助IDE(例如Eclipse、IntelliJ IDEA等)和其他工具(例如Spring Boot Actuator)了解自动配置类的信息

如:

{"name": "spring.datasource.url","type": "java.lang.String","description": "URL of the database.","defaultValue": "jdbc:h2:mem:testdb"
}

spring.factories文件是Spring框架的一个标准配置文件,它允许第三方开发者向Spring框架注册自己的实现类或者工厂类,以扩展或替换Spring框架的默认行为。这个文件位于类路径的META-INF目录下,它是一个标准的Java属性文件,其中每行包含了一个键值对,键表示要注册的类型或接口,值表示该类型或接口的实现类或工厂类。

如:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration

相关内容