SpringBoot学习(三):SpringBoot的配置

配置文件分类

springboot是基于约定的,所有有很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

  • properties
server.port=8080
  • yml
server:
  port: 8080
  //空格必须有

properties方式

application.properties在快速启动中会被默认创建在resources文件夹下,
使用maven构建需要自行在resourses文件夹下创建这个文件。(其他地方也可)。文件中除了springboot的内容,我们也可以自行定义一些变量,但不会被springboot识别,可以在之后的项目中提取。

yml方式

文件名必须为application.y(a)ml

配置优先级:properties>yml>yaml

yaml基本语法

YML是一种直观的能够被电脑识别的数据序列化格式,以数据为核心,比传统的xml方式更为简洁。YAML的文件扩展名可以使用.yml和.yaml。

  • properties
server.port=8080
server.address=127.0.01
  • xml
<server>
	<port>8080</port>
	<address>127.0.0.1</address>
</server>
  • yml
server:
   port: 8080
   address: 127.0.01

小结

大小写敏感
数值前必须有空格
使用缩进表示层级关系
缩进不允许使用Tab(IDEA可以自动转换为空格)
缩进空格数目不重要,相同层级元素左侧对齐即可
#表示注释,从这个字符一个到行尾

yaml数据格式

  • 对象(map):键值对的集合
person:
   name: zhangsan
   age: 20
#行内写法,注意两处的空格不能省略,没有缩进式用得多
person: {name: zhangsan,age: 20}
  • 数组:一组按次序排列的值
address:
	-  beijing
	-  shanghai
#行内写法
address: [beijing,shanghai]
  • 纯量:单个的,不可再分的值
msg1: 'hello \n world'   #单引号忽略转义字符
msg2: "hello \n world"  #双引号识别转义字符

YML参数引用

name: lisi

person: 
   name: ${name}

获取配置文件数据

三种方式读取配置内容

  • @Value
    @Value("${name}")
    private String name1;
    @Value("${person.name}")
    private String name2;
    @Value("${person.age}")
    private int age1;
    @Value("${address[0]}")
    private String address1;
    @RequestMapping("/hello")
    public String hello(){
        System.out.println(name1);
        System.out.println(name2);
        System.out.println(age1);
        System.out.println(address1);
        return "test success";
    }
注入单值为以上写法,下面是注入对象
  • Environment
@Autowired
   private Environment env;
   @RequestMapping("/hello1")
   public String hello1(){
       System.out.println(env.getProperty("person.name"));
       System.out.println(env.getProperty("address[0]"));
       return "test success";
   }
想把整个对象注入到我们的属性中,就用到了ConfigurationProperties
  • @ConfigurationProperties
步骤
1.创建对应类(insert+alt可以快捷创建getter和setter方法)
2.添加@ConfigurationProperties(prefix = "")注解
@Component
@ConfigurationProperties //在当前版本中,如果不添加(prefix="person"),则不能识别person的属性,如果添加,就不能识别其他变量的属性
public class Person {
   private String name;
   private String age;
   private int num;
   private String[] address;
   ...
   }

profile

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同的环境,比如:开发,测试,生产等。其中数据库地址,服务端口等等配置都不同,如果每次打包时,都需要修改配置文件,那么会非常麻烦。profile功能就是来进行动态的配置切换的。

1.profile配置方式
···多profile文件方式:配置多个properties文件,如application-dev.properties,在主文件application.properties使用spring.profiles.active=pro,激活此配置。
···yml多文档方式:只创建一个yml文件,把他们分成不同的部分

#用三个‘-’划分不同部分
#使用spring: profiles:命名文档部分名
#使用spring:active:“xxx”选择激活的配置
---
server: 
	port: 8081
spring:
	profiles: dev
---
server:
	port: 8082
spring:
	profiles: test
---
server:
  	port: 8083
spring:
  	profiles:pro
---
spring:
  profiles: 
  	active: pro

2.profile激活方式
···配置文件:如上
···虚拟机参数:在idea的设置中修改虚拟机的参数,在VM options中指定:
-Dspring.profiles.active=dev
···命令行函数:java -jar xxx.jar --spring.profiles.active=dev

项目内部配置文件加载顺序

内部配置加载顺序:
1.file:./config/:当前项目下的/config目录下(如没有自己创建config文件夹)
2.file:./ :当前项目的根目录
3.classpath:/config/: classpath的/config目录下
4.classpath:/ :classpath的根目录下(我们配置的yml,properties文件都在这里)
优先级由高到低,都是用的application.properties/y(a)ml进行配置
maven打包时前两个配置文件不会被打入jar包

项目外部配置文件加载顺序

可以不在项目中进行配置,可以选择一个项目外的配置文件.在命令行使用–spring.config.location=“xxx”,或者让配置文件与jar文件同级,即可读取。
外部配置用处:在不修改项目的情况下,修改配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值