Springboot yaml文件配置
一、使用yaml文件配置如下信息
教师类: 姓名、 性别、 年龄
学生类集合
学生1: 姓名、性别、年龄(15到18随机值)、
成绩
(语文: 80到90随机值)
(数学: 70到80随机值)
(英语: 90到100随机值)
学生2: 姓名、性别、年龄(15到18随机值)
成绩
(语文: 80到90随机值)
(数学: 70到80随机值)
(英语: 90到100随机值)
二、使用controller程序
1、显示教师类的相关信息
2、显示每个学生的三科平均成绩
3、显示语文平均成绩
三、使用多环境配置实现
1、测试环境使用8080服务器端口
2、开发环境使用8081服务器端口
3、生产环境使用8082服务器端口
4、在不同环境下,执行社区团购程序:测试环境使用多多买菜、开发环境使用橙心优选,生产环境使用美团优选6
新建一个module,配置pom.xml,重点是要加入
spring-boot-configuration-processor依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>springboot_xzit</artifactId> <groupId>com.xzit</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>day3_job</artifactId> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency> </dependencies> </project>
新建一个教师类,加上
ConfigurationProperties注解
package com.xzit.model; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @Data @ConfigurationProperties(prefix = "teacher") public class Teacher { private String name; private String gender; private int age; }
新建一个application.yml文件,加入教师的相关信息配置:
teacher: name: 伊万老师 gender: 男 age: ${random.int(20,30)}
新建一个teacherController,定义一个返回teacher对象的方法,浏览器请求是teacher
package com.xzit.controller; import com.xzit.model.Teacher; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("teacher") public class TeacherController { @Resource private Teacher teacher; @GetMapping public Object test(){ return teacher; } }
创建一个主类并运行
package com.xzit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Day3AppServer { public static void main(String[] args) { SpringApplication.run(Day3AppServer.class,args); } }
执行效果:
新建一个学生类:
package com.xzit.model; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @Component @ConfigurationProperties(prefix = "com.xzit.model.student") public class Student { private String name; private String gender; private int age; private double language; private double math; private double english; }
在yml文件中加入学生类集合
teacher: name: 伊万老师 gender: 男 age: ${random.int(20,30)} stuList: - name: 学生1 gender: 男 age: ${random.int(15,18)} language: ${random.int(80,90)} math: ${random.int(70,80)} english: ${random.int(90,100)} - name: 学生2 gender: 女 age: ${random.int(15,18)} language: ${random.int(80,90)} math: ${random.int(70,80)} english: ${random.int(90,100)}
在教师类中加入一个stuList
package com.xzit.model; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; @Component @Data @ConfigurationProperties(prefix = "teacher") public class Teacher { private String name; private String gender; private int age; private List<Student> stuList; }
重启服务,执行效果:
新建3个yml文件,代表测试,开发,生产库配置
server:
port: 8080
server:
port: 8081
server:
port: 8082
新建1个接口和3个实现类
package com.xzit.shopping; public interface Shopping { void shopping(); }
package com.xzit.shopping; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("test")//测试环境使用多多买菜 public class Duoduo implements Shopping{ @Override public void shopping() { System.out.println("使用多多买菜"); } }
package com.xzit.shopping; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("prod")//生产环境使用美团优选6 public class MeiTuan implements Shopping{ @Override public void shopping() { System.out.println("生产环境使用美团优选6"); } }
package com.xzit.shopping; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("dev")//开发环境使用橙心优选 public class Orange implements Shopping{ @Override public void shopping() { System.out.println("使用橙心优选"); } }
新建一个shoppingController
package com.xzit.controller; import com.xzit.shopping.Shopping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("shopping") public class ShoppingController { @Resource private Shopping shopping; @GetMapping public Object shopping(){ shopping.shopping(); return "ok"; } }
在application.yml文件中配置引用的yml文件,dev是开发库
spring:
profiles:
active: dev
执行效果: