一、背景

为了更好的使用springboot,所以看一下application.yml配置这块。主要是看数据绑定这块。

主要参考:https://www.hangge.com/blog/cache/detail_2459.html

二、项目主要内容

1、controller

package com.shuimutong.learn.springboot.yml.controller;

import com.alibaba.fastjson.JSON;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController
public class HelloController { @GetMapping("/hello2")
public String hello2() {
return "Hello, Jack!";
}
}

2、启动类

package com.shuimutong.learn.springboot.yml;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class YmlApplication {
public static void main(String[] args) {
SpringApplication.run(YmlApplication.class, args);
}
}

三、开始使用application.yml

1、从新建一个application.yml开始

在resources目录下新建application.yml,并写入以下内容,

server:
port: 8081

启动服务,从日志看出端口变更为8081,访问url说明配置生效。

2、在application.yml中添加几个属性看看

1)application.yml增加内容

my:
name: Big大
age: 20
info: name:${my.name}--age:${my.age}

2)新建一个MyData类

package com.shuimutong.learn.springboot.yml.bean;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; @Component
@Data
public class MyData {
@Value("${my.name}")
private String name;
@Value("${my.age}")
private int age;
@Value("${my.info}")
private String info;
}

使用@Value注解绑定application.yml中的配置

3)HelloController增加对应的使用

    @Resource
private MyData myData; @GetMapping("/getData")
public MyData getMyData() {
return myData;
}

4)启动服务,并访问对应的url

{"name":"Big大","age":20,"info":"name:Big大--age:20"}

说明值绑定正常。

3、单个属性绑定太麻烦?试试对象绑定

1)application.yml增加内容

classroom:
clazz: 一年级
grade: 3班
seatNum: 30
courses:
- 语文
- 数学
- 英语
- 化学
- 体育
- 美术
students:
- name: 张三
age: 8
- name: 李四
age: 9

2)编写对应的bean,并添加注解

//Classroom类
package com.shuimutong.learn.springboot.yml.bean; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import java.util.List; @Data
@Component
@ConfigurationProperties(prefix = "classroom")
public class Classroom {
private String clazz;
private String grade;
private int seatNum;
private List<String> courses;
private List<Student> students;
} //Student类
package com.shuimutong.learn.springboot.yml.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; @Data
public class Student {
private String name;
private int age;
}

3)controller添加对应的方法

    @Resource
private Classroom classroom; @GetMapping("/classInfo")
public Classroom getClassroomInfo() {
System.out.println("this is stu:" + JSON.toJSONString(student));
return classroom;
}

4)启动服务看看效果

{"clazz":"一年级","grade":"3班","seatNum":30,"courses":["语文","数学","英语","化学","体育","美术"],"students":[{"name":"张三","age":8},{"name":"李四","age":9}]}

符合预期。

4、配置太多,能不能拆成多个文件?

可以的!

1)增加application-classroom.yml文件

将内容从application.yml中抽出来。

2)修改application.yml

增加以下内容:

spring:
profiles:
active:
- classroom

配置那块你没看错,yml文件名一定要以“application-”开头。

3)启动程序验证

5、还有没有其他招数?

有,请移步git:https://github.com/shuimutong/spring_learn/tree/master/spring_boot/yml

最新文章

  1. Princeton Algorithms week3 Assignment
  2. X-UA-Compatible失效问题
  3. 控件使用经验-MVP模式+控件封装
  4. Spring-涉及到的设计模式汇总
  5. MVC模式中路由如何生成URL
  6. JS范围
  7. [Java] String.Split 方法的6个重载函数
  8. SQL四种语言:DDL,DML,DCL,TCL
  9. [struts2]jstl标签用法技巧
  10. 暑假集训(1)第五弹 -----Rails(Uva514)
  11. linux系统下,递归删除.svn文件
  12. 最近用的到的一些js的常用方法(简单的)
  13. cocos2d-x游戏开发系列教程-超级玛丽03-main函数
  14. springboot启动关闭脚本
  15. logback kafkaAppender输出日志到kafka
  16. [USACO08OPEN]寻宝之路Clear And Present Danger
  17. Intellij IDEA使用Docker插件部署应用
  18. javascript 回调函数定义 模板
  19. 下载JDK开发工具包
  20. CSS 基础 例子 背景色 &amp; 背景图片

热门文章

  1. vulstack红队评估(五)
  2. 搜索引擎ElasticSearch入门
  3. 【数位dp+状压】XHXJ &#39;s LIS
  4. 化繁就简,如何利用Spring AOP快速实现系统日志
  5. 记一次解密wireshark抓取的冰蝎通信流量
  6. 每日一题 - 剑指 Offer 34. 二叉树中和为某一值的路径
  7. Qt-绘图
  8. 线性DP之机器分配
  9. 用Serverless Kubernetes为.NET (Core)应用保驾护航
  10. Jmeter系列(39)- Jmeter 分布式测试