Springboot yaml文件配置

一、使用yaml文件配置如下信息

教师类: 姓名、 性别、  年龄

   学生类集合

       学生1: 姓名、性别、年龄(1518随机值)、

成绩

(语文: 8090随机值)

(数学: 7080随机值)

(英语: 90100随机值)

       学生2: 姓名、性别、年龄(1518随机值)

成绩

(语文: 8090随机值)

(数学: 7080随机值)

(英语: 90100随机值)

二、使用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

 

执行效果:

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-08-10 00:21  伊万  阅读(577)  评论(0编辑  收藏  举报