一、背景

为了更好的使用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

springboot application.yml配置学习的更多相关文章

  1. SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

    SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...

  2. springboot application.properties配置大全

    springboot application.properties配置大全 官方文档 https://docs.spring.io/spring-boot/docs/current/reference ...

  3. SpringBoot static修饰的字段/方法如何获取application.yml配置

    SpringBoot的application.yml一种特殊的应用场景,一般我们获取application.yml的配置文件只要@Value就可以获取到值了,但是如果是static修饰的字段肯定就不能 ...

  4. Linux下 nohup后台运行springboot jar 包时,使用指定的 application.yml配置

    jar 包启动时指定配置文件 application.yml nohup java -jar -Dserver.port=8080 wx-member-card-0.0.1-SNAPSHOT.war ...

  5. SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active

    趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...

  6. SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active(转)

    趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...

  7. springboot 读取 yml 配置的几种方式

    前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...

  8. SpringBoot application.yml logback.xml 多环境

    启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 java -jar app.j ...

  9. SpringBoot的yml配置

    Spring Boot的yml配置 #开发配置 spring: data: solr: host: http://localhost:6789/solr/mote mvc: view: # 页面默认前 ...

随机推荐

  1. Mybatis各语句高级用法(未完待续)

    更多的语法请参考官网 http://www.mybatis.org/mybatis-3/dynamic-sql.html# 环境:MySQL5.6,jdk1.8 建议:所有的参数加上@Param re ...

  2. Java对MongoDB的CRUD

    https://blog.51cto.com/aiilive/1339058 MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数 ...

  3. Java Agent(上)

    1.java agent是什么? --->对用户透明,不侵入用户业务代码.让java虚拟机加载agent jar 2.java agent有什么用? --->应用场景例如:调用链追踪项目, ...

  4. win10 64位 MySQL 8.0 下载与安装

    免安装版(超级棒的教程): 安装只需 Download .zip压缩文件 卸载只需 Delete 解压文件即可 https://blog.csdn.net/hzxOnlineOk/article/de ...

  5. SpringBoot-读取classpath下文件

    文章目录 开发过程中,必不可少的需要读取文件,对于打包方式的不同,还会存在一些坑,比如以jar包方式部署时,文件都存在于jar包中,某些读取方式在开发工程中都可行,但是打包后,由于文件被保存在jar中 ...

  6. Linux下C++动态加载so 调用方法

    Windows 下的C++动态加载DLL调用方法 文献参考 http://man7.org/linux/man-pages/man0/dlfcn.h.0p.html http://man7.org/l ...

  7. 利用Chrome浏览器调试线上代码

    前言 之前调试前端bug都是在开发环境中做完并多次测试没有问题之后发布测试环境,验收合格之后发布生产.但生产环境偏偏会有和开发和测试环境不一致的情况,例如测试环境需要加密,而开发环境先不加密,测试环境 ...

  8. Oracle 11g数据脱敏

    Oracle 11g数据脱敏 前言 最近开发人员有个需求,导一份生产库的数据到测试库. 由于生产数据安全需要,需要并允许对导出的数据进行加密脱敏处理. 关于加密和脱敏 个人理解, 加密是通过一系列规则 ...

  9. 用.NET做B/S结构的系统,您是用几种结构来开发,每一层之间的关系以及为什么要这样分层?

    表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 数据访问层(DAL):直 ...

  10. 支持十万并发的黑科技-NIO

    今天是猿灯塔“365天原创计划”第3天. 今天讲: 支持十万并发的黑科技-NIO 翻译过来就是:Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致 ...