SpringBoot的配置【配置文件、加载顺序、配置原理】
warning:
这篇文章距离上次修改已过416天,其中的内容可能已经有所变动。
SpringBoot配置详解:
一、配置文件
SpringBoot支持application.properties和application.yml两种格式的配置文件。
application.properties示例:
server.port=8080
server.context-path=/myappapplication.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官方文档。
评论已关闭