
Spring Boot配置文件
spring为开发者提供了一个名为的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用在pom.xml中引入热部署依赖引入依赖后可以通过ctrl+f9来实施热部署。
目录
1、properties配置文件在idea中默认utf-8可能会乱码
2、@Value获取值和@ConfigurationProperties获取值比较
3、@PropertySource&@ImportResource&@Bean
2、占位符获取之前配置的值,如果没有可以使用 : 指定默认值
一、SpringBoot热部署
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用
在pom.xml中引入热部署依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
引入依赖后可以通过ctrl+f9来实施热部署
二、配置文件
Spring Boot 使用一个全局的配置文件来调整应用的行为和修改自动配置的默认值。配置文件名是固定的,通常有两个选项:
application.properties
application.yml
1、配置文件的作用
配置文件主要用于修改Spring Boot自动配置的默认值。Spring Boot在底层为我们自动配置好了很多设置,我们可以通过配置文件根据自己的需求进行调整。
2、YAML配置文件
相较于 XML(标记语言)和 JSON(数据交换格式),YAML以数据为中心,比json、xml等更适合做配置文件。
YAML与XML和JSON的对比:
三、YAML语法
1、基本语法
- k:(空格)v:表示一对键值对(空格必须有);
- 以空格的缩进来控制层级关系;
- 只要是左对齐的一列数据,都是同一个层级的;
- 属性和值也是大小写敏感;
2、值的写法
- 字面量:
- 普通的值(数字,字符串,布尔)
- 字符串:
- 默认不用加上单引号或者双引号;
- “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
- ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
单引号使用示例:
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
双引号使用示例:
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
3、对象、Map(属性和值)(键值对)
- k: v:在下一行来写对象的属性和值的关系;注意缩进
- 对象还是k: v的方式
4、数组(List、Set)
- 用- 值表示数组中的一个元素
- 行内写法(推荐)
四、配置文件注入
为了方便我们编写配置文件,我们可以导入配置文件处理器,这样以后编写配置就有提示了
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
下面是加入配置文件处理器后的效果:
1、properties配置文件在idea中默认utf-8可能会乱码
2、@Value获取值和@ConfigurationProperties获取值比较
无论是配置文件yml还是properties他们都能获取到值
如果只是在某个业务逻辑中需要获取一下配置文件中的某项值,则使用@Value
如果专门编写了一个javaBean来和配置文件进行映射,则可以直接使用@ConfigurationProperties
注: @ConfigurationProperties能够自动匹配驼峰命名方式
3、@PropertySource&@ImportResource&@Bean
(1) @PropertySource
加载指定的配置文件
代码示例如下:
//在person类上加上该代码最会去找person.properties配置文件
@PropertySource(value = {"classpath:person.properties"})
(2)@ImportResource
导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来需要加@ImportResource标注在一个配置类上
(3)@Bean
SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件
/**
* @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
*
* 在配置文件中用<bean><bean/>标签添加组件
* *
/
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService02(){
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService();
}
}
五、配置文件占位符
1、随机数
${random.value}:生成一个随机字符串
${random.int}:生成一个随机的整数
${random.long}:生成一个随机的长整数
${random.int(10)}:生成一个0到10之间的随机整数(包括0,不包括10)
${random.int[1024,65536]}:生成一个1024到65536之间的随机整数(包括1024,不包括65536)
2、占位符获取之前配置的值,如果没有可以使用 : 指定默认值
person.dog.name=${person.hello:hello}_dog
如果person.hello配置存在,例如:person.hello的值为 zhangsan,因此person.dog.name 的最终值为 zhangsan_dog。
如果person.hello配置不存在,Spring 会使用:后边设置的默认值 "hello",因此,person.dog.name 的最终值为 hello_dog。
六、多配置文件
1、多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;
2、yml支持多文档块方式
文档块以---分隔开
3、激活指定profile
- 在配置文件中指定 spring.profiles.active=dev
- 命令行:java -jar springboot01-1.0-SNAPSHOT.jar --spring.profiles.active=dev
- 可以直接在测试的时候,配置传入命令行参数
- 虚拟机参数:-Dspring.profiles.active=dev
七、配置文件加载顺序
springboot 启动会扫描以下位置的application.properties
或者application.yml
文件作为Spring boot的默认配置文件
配置文件的读取顺序,优先级由高到低,高优先级的配置会覆盖低优先级的配置:
classpath一般为resources
- 根目录/config/
- 根目录/
- classpath目录/config/
- classpath目录/
更多推荐
所有评论(0)