application.properties

spring.application.name=spring-boot-simple-study
server.port=8080

application.yaml

server:
  port: 8082
name: yaml

#一、对象 map 键值对集合
# 行外写法
person:
  name: zhangsan
  age: 23
  address:
    - beijing
    - shanghai
    - guangzhou
    - shenzhen
# 行内写法
person2: {name: zhangsan2,age: 24}
#二、数组
# 行外写法
address:
  - beijing
  - shanghai
  - guangzhou
  - shenzhen
# 行内写法
address2: [beijing, shanghai, guangzhou, shenzhen]

#三、纯量
msg1: 'hello \n world !' #单引号忽略转义字符
msg2: "hello \n world !" #双引号识别转义字符


#四、参数引用
person3:
  name: {name} #会把前面定义的name=yaml赋值到这里

application.yml

server:
  port: 8081
name: yml

1 Config类读取配置文件: 

@Data
@Configuration
public class Config {
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private String age;
    @Value("${msg1}")
    private String msg1;
    @Value("${msg2}")
    private String msg2;
}

2 Person实体类+@ConfigurationProperties获取配置

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private String age;
    //private List<String> addr;
    private String[] address;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", addr=" + address +
                '}';
    }
}

3  Environment获取配置

@RestController
public class Control {
    /** 1、使用@Value注解获取配置 */
    @Autowired
    Config config;
    @GetMapping("/get1")
    public void viewMsg() {
        System.out.println(config.getMsg1());
        System.out.println(config.getMsg2());
    }
    @PostMapping("/viewPersonName")
    public void viewName(){
        System.out.println(config.getName());
    }
    /** 2、import org.springframework.core.env.Environment;  */
    @Autowired
    public Environment environment;
    @GetMapping("/get2")
    public void viewEnvironmentGetValue(){
        System.out.println(environment.getProperty("name")); // yaml
        System.out.println(environment.getProperty("address[0]")); // beijing
    }
    /** 3、/*/
    @Autowired
    Person person;
    @GetMapping("/get3")
    public void view_configurationPropertiesGetValue(){
        System.out.println(person.getName());
        System.out.println(person.getAge());
        for (String a : person.getAddress()) {
            System.out.println(a);
        }
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐