SpringBoot--配置文件

1、配置文件

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

  •application.properties

  •application.yml

 1.2 相关依赖

<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>

 1.3 配置文件中文乱码的问题解决

 ​ 本项目乱码解决
在这里插入图片描述
 ​ 所有项目
在这里插入图片描述

 1.4 配置文件的作用:

 ​ 修改SpringBoot自动配置的默认值,SpringBoot在底层都给我们自动配置好

​ YAML:

server:
  port: 8888

​ XML:

<server>
	<port>8888</port>
</server>

2、YAML语法:

 ​2.1 基本语法

k:(空格)v :表示一对键值对

以 空格 的缩进来控制层级关系,并且大小写敏感
server:
    port: 8888
    path: /hello

 2.2 值的写法

  字面量:普通的值(数字,字符串,布尔)

​    k: v

 ​		1. 字符串默认不用加上单引号或者双引号

 ​		2. "" 双引号:不会转义字符串里面的特殊字符

 ​		3. '' 单引号:会转义特殊字符,时期变为普通的字符串

  对象、Map(键值对–>属性: 值)

​    k: v

​   在下一行来写对象的属性和值的关系

person:
		name: hanhan
		age: 20

  行内写法:

person: {name: hanhan,age: 20}

  数组(List、Set)

   用- 值表示数组中的一个元素

person:
 - hanhan
 - zhangsan
 - lisi

  行内写法

pets: [hanhan,zhangsan,lisi]

3、配置文件值注入

  配置文件

person:
		name: hanhan
		age: 20

  javaBean

@Component /*加入到容器*/
@ConfigurationProperties(prefix = "person")
/*将本类中的所有属性和配置文件中相关的配置进行绑定;
 *prefix = "person":配置文件中person下面的所有属性进行一一映射
 */
public class Person {

    private String name;
    private Integer age;


 3.1 @Value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

  使用:​
   ①获取一下配置文件中的某项值,使用**@Value**

​   ②编写javaBean来和配置文件进行映射,使用**@ConfigurationProperties**

 3.2 @PropertySource&@ImportResource&@Bean

  @PropertySource:加载指定的配置文件

@PropertySource(value = {"classpath:person.properties"})
@Component
public class Person {}

  @ImportResource:导入Spring的配置文件,让配置文件生效(注解在主程序上)

@ImportResource(locations = {"classpath:beans.xml"})

  SpringBoot推荐使用全注解的方式添加组件

@Configuration	/*代替Spring配置文件*/
public class MyAppConfig {

    /*将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名*/
    @Bean
    public HelloService helloService02(){
        System.out.println("配置类@Bean添加组件");
        return new HelloService();
    }
}

4、配置文件占位符的使用

  随机数

${random.value}
${random.int}
${random.long}
${random.int(100)}
${random.int[1,32767]}
person.age=${random.int}

5、Profile

 5.1 多Profile文件

	主配置文件编写的时候,文件名可以是   
		application-{profile}.properties/yml
			
	默认使用application.properties的配置;

 5.2 yml支持多文档块方式

server:
  port: 8088
spring:
  profiles:
    active: prod

---
server:
  port: 8888
spring:
  profiles: dev #指定属于哪个环境

 5.3 激活指定profile三种方法

​	①在配置文件中指定  spring.profiles.active=dev

​	②命令行:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

​	③虚拟机参数:-Dspring.profiles.active=dev

6、配置文件加载位置

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

	file:./config/
	
	file:./
	
	classpath:/config/
	
	classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置,SpringBoot会从这四个位置全部加载主配置文件,并且互补配置

7、外部配置加载顺序

  SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置

1.命令行参数:java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --配置项=值

 2.来自java:comp/env的JNDI属性

 3.Java系统属性(System.getProperties())

 4.操作系统环境变量

 5.RandomValuePropertySource配置的random.*属性值

 6.由jar包外向jar包内进行寻找配置文件,先加载带profile后加载不带profile

 7.@Configuration注解类上的@PropertySource

 8.通过SpringApplication.setDefaultProperties指定的默认属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值