Spring Boot系列笔记--配置文件

    科技2026-01-06  10

    一、yaml语法

    基本语法 K: V,:后必须跟一个空格; 通过空格缩进来控制层级server: port: 8081 path: /hello 字面量写法 字符串默认不用加上单引号或者双引号; ​ "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 ​name: "zhangsan \n lisi" 输出;zhangsan 换行 lisi '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据 ​ name: 'zhangsan \n lisi' 输出;zhangsan \n lisi对象、Map写法friends: lastname: zhangsan age: 39 --------------- #行内写法 friends: {lastname: zhangsan, age: 39} 数组、List、Set写法pets: - cat - dog - pig ---------------- # 行内写法 pets: [cat, dog, pig]

    二、配置文件值注入

    现在pom文件里导入依赖,在配置文件显示提示<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> 编写JavaBean@Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog; //Getter、Setter方法 } yaml配置文件赋值person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1: v1,k2: 12} lists: - lisi - zhaoliu dog: name: 小狗 age: 12 @ConfigurationProperties(prefix = "person")的作用是将配置文件中配置的属性和这个组件中的属性进行映射,因此必须加上@Component将该组件注入到容器中properties配置文件中文乱码

    三、@PropertySource、@ImportResource

    @PropertySource:加载指定的配置文件 @PropertySource(value = {"classpath:person.properties"})@ImportResource:SpringBoot中没有Spring配置文件,需要导入 @ImportResource(locations = {"classpath:beans.xml"})SpringBoot推荐的给容器中添加组件的方式:全注解 用配置类来代替配置文件@Configuration public class MyAppConfig { //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名 @Bean public HelloService helloService(){ return new HelloService(); } }

    四、配置文件占位符

    随机数 获取之前的值user.name = zhangsan user.info = ${user.name}_18 如果没有可以指定person.dog.name=${person.hello:hello}_dog

    五、Profile

    可以写多个主配置文件:application-{profile}.properties/yml,默认使用application.properties的配置,也可以在application.properties中指定server.port=8080 spring.profiles.active=dev

    2. yaml支持多文档块

    server: port: 8081 spring: profiles: active: prod --- server: port: 8083 spring: profiles: dev --- server: port: 8084 spring: profiles: prod #指定属于哪个环境

    六、配置文件加载位置

    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

    –file:./config/

    –file:./

    –classpath:/config/

    –classpath:/

    优先级由高到低,高优先级的配置会覆盖低优先级的配置;

    SpringBoot会从这四个位置全部加载主配置文件;互补配置;

    七、自动配置

    SpringBoot启动会加载大量的自动配置类看我们需要的功能有没有SpringBoot默认写好的自动配置类看这个自动配置类中到底配置了哪些组件(只要我们要用的组件有,我们就不需要再来配置了)给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值

    八、@Conditional派生注解

    作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效

    @Conditional扩展注解作用(判断是否满足当前指定条件)@ConditionalOnJava系统的java版本是否符合要求@ConditionalOnBean容器中存在指定Bean;@ConditionalOnMissingBean容器中不存在指定Bean;@ConditionalOnExpression满足SpEL表达式指定@ConditionalOnClass系统中有指定的类@ConditionalOnMissingClass系统中没有指定的类@ConditionalOnSingleCandidate容器中只有一个指定的Bean,或者这个Bean是首选Bean@ConditionalOnProperty系统中指定的属性是否有指定的值@ConditionalOnResource类路径下是否存在指定资源文件@ConditionalOnWebApplication当前是web环境@ConditionalOnNotWebApplication当前不是web环境@ConditionalOnJndiJNDI存在指定项

    九、自动配置报告

    自动配置类必须在一定的条件下才能生效在properties配置文件中配置debug=true来让控制台打印自动配置报告
    Processed: 0.016, SQL: 9