SpringBoot基本配置和yaml、yml详解

SpringBoot基本配置和yaml、yml详解

springboot整合了市面上大部分热门框架的配置文件,并为其设置了默认值,若不想用默认配置,只需要在springboot核心配置文件application.properties中直接修改即可

进行属性配置

springboot的核心配置文件通过键值对配置对应属性,例如

  • 将服务器端口改为8888

    server.port=8888
    

其他配置详见官方文档

属性文件的格式

除了.properties格式还有其他两种格式的配置文件可用,分别是.yml.yaml,官方推荐使用.yml,.yml.yaml格式文件的写法是一样的。写法如下:

server:
  port: 80

当三种配置文件格式共存时,加载优先级.properties>.yml>.yaml,且共存叠加

.yaml.yml语法规则

  • 大小写敏感
  • 属性层级关系用多行描述,每行结尾用冒号结束
  • 使用缩进表示层级关系,同层级左侧对其,只允许使用空格(不允许使用Tab键)
  • 属性前面添加空格(属性名与属性值之间使用冒号+空格作为分割)
  • #表示注解
  • **核心规则:**数据前面要用空格和冒号隔开

示例:

user是对象的表示格式,hobby是数组的表示格式,hobby2是数组的缩略格式,users为对象数组的表示格式,user1是对象数组的缩略格式。

country: china
province: zhejiang
city: hangzhou

user:
  name: zhangsan
  age: 15
  
hobby: 
  - game
  - music
  - sleep
  - ping-pang

hobby2: [game,music,sleep,mpingpang]

users:
  - name: zhangsan
    age: 15
  - name: lisi
    age: 14
  - name: wangwu
    age: 13

users1: [{name: zhangsan,age: 15},{name: lisi,age: 14},{name: wangwu,age: 13}]

.yaml.yml文件数据读取

读取单个数据

  • 使用@Value读取

  • 属性名引用方式,使用el表达式:${一级属性名.二级属性名…},数组用[]

/**
 * 读取yaml或yml数据中的单一数据
 * @return
 */
@Value("${country}")
private String country;

@Value("${user.username}")
private String name;

@Value("${hobby[1]}")
private String hobby1;

读取全部数据

  • 使用springboot的自动装配注解@Autowired
  • 用一个Enviroment类型数据装
  • 使用时用Enviroment.getProperty(属性名)方法取该属性名的值
/**
 * 读取yaml或yml数据中的全部数据
 */
@Autowired
private Environment env;

@GetMapping
public String getById(){
    System.out.println(env.getProperty("country"));
    return "springboot is running3...";
}

读取数据并封装到对象中

  • 创建类,用于封装下面的数据

    @Component
    @ConfigurationProperties("datasource")
    public class MyDataSource {
        private String driver;
        private String url;
        private String username;
        private String password;
        //getter、setter、toString
    }
    
  • 由spring帮我们加载数据到对象中,一定要告诉spring加载这组信息

    @ConfigurationProperties("datasource")
    

    就是这个注解

  • 使用时直接从spring中获取信息使用

    自动装配

    @Autowired
    private MyDataSource myDataSource;
    

.yaml.yml文件的变量引用

  • 同样是使用el表达式${一级属性名.二级属性名…}
  • 使用双引号包裹的字符串,会使转义字符生效
baseDir: c:\win10

#使用${属性名}引用
tempDir1: ${baseDir}\temp

#使用双引号包裹的字符串,会使转义字符生效
tempDir2: "${baseDir}\temp"
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值