Spring Boot(三):配置

这次主要介绍sb的配置使用,包括配置文件,加载顺序,配置原理。

  • 配置文件中有两种一般放在resources或者类路径下的config下,配置形式有两种yml语法和properties两种。

    在maven中resource文件夹是在类路径下(class文件夹下),不是一个新的文件夹。

  • 如何在代码中获取到这些配置文件的信息,配置文件值注入。

  • 还有Profile的使用,根据环境不同,选择使用不同的配置文件。

  • 接下来就是讲解自动配置的原理,如何根据场景选择导入不同的依赖的。

1. 配置文件

springboot使用一个全局的配置文件,配置文件名是固定的:

application.properties

application.yml

配置文件的作用是:修改sb自动配置的默认值。

2. YAML语法

k:(空格)v:表示一对键值对(空格必须有);

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

属性和值也是大小写敏感;

1. 值的写法
1. 普通值

K: v 语法

对于字符串,不需要加引号,加上了则有特殊意义:

  • ‘ ‘:单引号 会转义特殊字符,将特殊字符作为普通数据
  • “ ”:双引号 不会转义特殊字符,将特殊字符存储,输出时按照原意义输出,\n 会换行。
2. 对象和Map

key:

​ k1: v1

​ k2: v2

行写法:

person: {name: zs,age:18} #空格
3.数组和Set
peosons:
- a1
- a2
- a3
2. 配置文件绑定类@ConfigurationProperties

将配置文件中的每一个属性的值,映射到spring的组件中,通过注解@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;prefix = “person”:配置文件中哪个下面的所有属性进行一一映射。

  <!--自己创建的配置文件类和配置文件绑定的提示依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
//验证属性注入是否成功:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Autowired
    Person person;


    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}
3. @ConfigurationProperties@Value

比较:
在这里插入图片描述

  • 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
  • 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
4. @PropertySource

上面的2 . 3.4都是关于值注入的,这里在介绍两种属性值注入的方式。

@PropertySource 加载指定配置文件;

默认的加载的配置文件是application.yml文件中的配置信息,使用@PropertySource可以指定使用的配置文件。

//让Person类使用person.yml的配置文件信息;
person.lastName="张三 \n 换行"
person.age=18
person.maps.k1=v1

@PropertySource("classpath:person.properties")
@Component//与配置文件绑定,必须是spring的组件
@ConfigurationProperties(prefix = "person")//指定配置文件的前缀
@Data
public class Person {

   // @Value("${person.last-name}") .会先于ConfigurationProperties赋值。
    private String lastName;
  //  @Value("#{18*2}")
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;


}

注意:会先去普通配置文件中加载信息,加载之后,会去主配置中再去加载信息,最终使用的是主配置文件信息。

3. 给容器中添加组件

@ImportResource&@Bean

使用@ImportResource 标注在配置类上,可以导入spring的xml文件到spring容器中,会自动创建xml文件中定义的bean。

@Bean是将返回值注册spring容器中。

4. Profile

创建多个配置文件,供给不同运行环境下使用:

#指定激活使用那种环境
spring:
  profiles:
    active: dev

5. 配置文件的加载顺序

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/ 项目的根路径下/config
–file:./ 项目的根路径下
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;

关于自动配置原理看这一篇:

https://blog.csdn.net/mahao25/article/details/103057816

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值