赞
踩
SpringBoot
允许在代码之外,提供应用程序运行的数据,以便在不同的环境中使用相同的应用程序代码。避免硬编码,提供系统的灵活性。可使用各种外部配置源,包括 Java 属性文件、YAML 文件、 环境变量和命令行参数。#Map<String, User> users
users:
user1:
name: 张三
age: 20
sex: 男
user2:
name: 李四
age: 22
sex: 男
#集合以及数组
#List<Login> logins
logins:
- login1:
username: zhangsan
password: 123456
- login2:
username: wangwu
password: 654321
#String[] names
names:
- lisi
- zhangsan
# 标量
security:
username: zhangsan
password: 123456
SpringBoot
同时支持 properties 和 yaml 格式的配置文件。配置文件名称默认是 application。我们可以使用 application.properties ,application.yaml。@Value
,@Value 一次注入一个 key 值。将多个 key 值绑定到 Bean 的多个属性用到 @ConfiguraionProperties 注解。 在代码中访问属性除了注解,Spring 提供了外部化配置的抽象对象Environment
。Environment
包含了几乎所有外部配置文件、环境变量,命令行参数的所有 key 和 value。需要使用Environment
的注入此对象吗,调用它的方法getProperty(String key)
方法即可。SpringBoot
建议使用一种格式的配置文件,如果 properties 和 yml 都存在。properties 文件优先。推荐使用 yml 文件。Environment
是外部化的抽象,是众多数据来源的集合。从中可以读取 application配置文件,环境变量,系统属性。使用方式 在 Bean 中注入 Environment
。调用它的 getProperty(String key)
方法。spring.config.import: conf/db.yml, conf/redis.yml
Spring Profiles
表示环境,Profiles
有助于隔离应用程序配置,并使它们仅在某些环境中可用。常说开发环境、测试环境、生产环境等。一个环境就是一组相关的配置数据,支撑我们的应用在这些配置下运行。应用程序启动时指定适合的环境。Spring Boot
规定环境文件的名称 application-{profile}.properties(yml)
。其中 profile 为自定义的环境名称。profile
是可以自定义的,但是一般推荐如下命名:
Spring Boot 会加载 application 以及 application-{profile} 两类文件,不是单独加载 application-{profile}。
spring.config.activate.on-profile: dev
spring.profiles.active: dev
@Value
绑定单个属性,当属性较多时不方便,SpringBoot
提供了另一种。将多个配置项绑定到 Bean 的属性,提供强类型的 Bean。Bean 能够访问到配置数据。标准的 JavaBean 有无参数构造方法,包含属性的访问器。配合 @ConfigurationProperties 注解一起使用。Bean 的 static 属性不支持。
Spring Boot
自动配置中大量使用了绑定 Bean
与 @ConfigurationProperties
,提供对框架的定制参数。项目中要使用的数据如果是可变的,推荐在 yml 或 properties 中提供。项目代码具有较大的灵活性。@ConfigurationProperties
能够配置多个简单类型的属性,同时支持 Map、List、数组类型。对属性还能验证基本格式。@ConfigurationProperties
声明在类上,表示绑定属性到此类。prefix 表示前缀,是配置文件中多个 key 的公共前缀。这些 key 以 “.” 作为分隔符。例如 app.name,app: name等。prefix=“app”,将文件中 app 开始的 key 都找到,调用与 key 相同名称的 setxxx 方法。如果有给属性赋值成功。没有的忽略。@ConfigurationProperties
注解起作用,还需要@EnableConfigurationProperties
或@ConfigurationPropertiesScan
。这两个注解是专门寻找@ConfigurationProperties
注解的,将他的对象注入到 Spring 容器。在启动类(配置类)上使用扫描注解。@EnableConfigurationProperties
适用于比较零散的类的情况。@ConfigurationPropertiesScan
适用于整个的包扫描@ConfigurationProperties
结合 @Bean
在方法上一起使用。@PropertySource
是主力,用以加载指定的 properties 文件。@ProperySource
与 @Configuration
一同使用,其他注解还有 @Value
,@ConfigurationProperties
。@Value("${key:defalutValue}")
,使用 Environment.getProperties("key", "defalutValue")
获取的是单个值(String,int,long,float,double等)@ConfigurationProperties
@Bean
注解。@ProperySource(value = "classpath:/xxxx.properties")
@ConfigurationProperties
使用需要配合其他注解:
@Configuration
@EnableConfigurationProperties
@ConfigurationPropertiesScan
@Bean
application配置文件的位置:
项目的根目录下
项目根目录的 /config目录
resources/config
resources目录
[1]. @ConfigurationProperties与yml配置文件属性匹配规则
[2]. ConfigurationProperties注解详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。