YAMl配置文件:
Spring Boot有两种配置文件 application.properties 和 application.yml ,名称是固定不变的,yaml是一种比 xml json 更适合的配置文件,不用关注属性的开闭。
1 语法格式:
key:(空格)value 必须要有空格,以换行、空格的缩进来代表层级关系,并且大小写敏感
server: port: 8080
2 值的写法:
字面量:普通数值(数字,字符串,布尔)
map、list、 对象:
person: lastName: yanghui age: 21 birthday: 1998/08/02
maps: {x: yang,n: huiyi} list: - yang - huiyi dog: name: 小狗 age: 3
3 配置文件自动注入: @ConfigurationProperties(prefix = "person") 注解:告诉springboot将本类的所有属性和配置文件的内容进行绑定; prefix = "person" 和person进行绑定
@Component 注解:把类加入到 容器中,这样才能使用ConfigurationProperties
@Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Date birthday; private Map<String,Object> maps; private List<Object> list; private Dog dog; ...
如果报错:
<!--配置文件处理器:当编写配置文件的时候会有提示。--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
4 添加配置文件处理器:想要让上边的注释生效,需要添加配置文件处理器。
官方文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor
<!--配置文件处理器:当编写配置文件的时候会有提示。--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
5 其他:如果只是要在配置文件中简单获取 某个值,则可以使用 @Value
@Value("${person.lastName}") private String lastName;
6 其他2:加载类路径下的其他配置文件 @PropertySource(value = {"classpath:person.properties"}),原本不指定会指向application.properties。
@PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") public class Person { /** * 如果只是要在配置文件中简单获取 某个值,则可以使用 @Value * @Value("${person.lastName}") */ private String lastName; private Integer age; private Date birthday; private Map<String,Object> maps; private List<Object> list; private Dog dog;
加载spring的配置文件@ImportResource(locations = {"classpath:beans.xml"}) 加在主程序上边的注释 -----》不推荐使用。
@ImportResource(locations = {"classpath:beans.xml"}) @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
推荐使用:@Configuration 来标注一个类是配置类,用来代替上边的spring配置文件
7 Profile 多环境支持: 使用多种配置文件,生产环境下的配置文件,测试环境下使用的配置文件。
具体详细查一下课程笔记的文档
8 配置文件可以位于不同位置:不同位置配置文件的优先级不同,高优先级的配置文件会覆盖相同内容的配置文件,但是不相同的会形成互补
当前项目的根目录 里的 config
当前项目的根目录
resource资源文件夹 里的 config
resource资源文件夹
–file:./config/ –file:./ –classpath:/config/ –classpath:/
*从上往下优先级降低*
官方配置文件文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/common-application-properties.html
解决配置文件 application.properties 乱码问题: 在settings查找file Encodings ;选择utf-8 ,勾选运行时编译成 ascii 编码。