SpringBoot的配置【配置文件、加载顺序、配置原理】
SpringBoot配置详解:
一、配置文件
SpringBoot支持application.properties
和application.yml
两种格式的配置文件。
application.properties
示例:
server.port=8080
server.context-path=/myapp
application.yml
示例:
server:
port: 8080
context-path: /myapp
二、配置加载顺序
SpringBoot启动时,会按照以下顺序加载配置:
- 启动类所在包以及子包中的
@Configuration
类 - 应用程序的
@PropertySource
注解指定的属性文件 - 打包在jar之外的
application.properties
或application.yml
文件 - 打包在jar内的
application.properties
或application.yml
文件 SPRING_APPLICATION_JSON
中的属性(如环境变量中的JSON)- 命令行参数
- 内嵌的
RandomValuePropertySource
配置的random.*
属性 - 外部配置文件(
${spring.config.import:file:./config/}
目录下的application.properties
或application.yml
文件) - 应用程序的
@ConfigurationProperties
注解的beans
三、配置原理
SpringBoot的配置是基于Spring框架的环境抽象和配置抽象。
Environment
接口:封装了SpringBoot应用运行时的环境信息,包括配置属性。PropertySource
接口:封装了配置属性信息,可以有多个PropertySource
组成一个PropertySources
。ConfigurationPropertySources
:SpringBoot自动配置的属性源,包括默认配置文件、profile配置文件、命令行参数等。ConfigurationProperties
注解:用于将配置文件中的属性映射到Java对象上。
四、配置自动配置
SpringBoot的自动配置是基于条件注解@ConditionalOnProperty
等条件注解,根据不同的条件进行不同的自动配置。
例如,如果项目中有spring-boot-starter-data-jpa
依赖,并且配置文件中有spring.jpa.database-platform
属性,则会自动配置JpaRepositories
。
五、配置自定义starter
开发者可以创建自定义的starter
,将配置、自动配置、服务导出等封装在一起,简化集成第三方库的步骤。
- 创建一个带有
spring.factories
文件的Jar,其中指定自动配置类。 - 在
spring.factories
中可以指定自动配置类和命名空间的属性配置类。 - 用户只需要引入这个
starter
,相关配置和自动配置就会被应用。
以上是SpringBoot配置的一个简要介绍,详细内容请参考SpringBoot官方文档。
评论已关闭