.yml 配置
# 自定义开发环境端口 默认本地 9801
# serverPort: 9801
spring:
profiles: dev
# 环境的配置
server:
port: 9801
# 自定义对象/配置
student:
name: 李四
age: 25
jobs: #数组方式1 @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
- java
linux
123
loves: [看电影,玩游戏,游泳,aaaa,456] # 数组方式2 @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
books: 水浒,西游,红楼梦,三国 # 数组方式3 @所有方式都可获取
frands: # List方式1 @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
- 李雷
韩梅梅
本山
familys: [李父,李牧,李姐,李弟,456] # List方式2 @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
organ: 眼,#耳,.#口,鼻 # List方式3 @所有方式都可获取
# 对象集合 @ConfigurationProperties 方式可以获取并封装成对象集合
users:
user:
- name: tom
age: 18
- name: 韩梅梅
age: 15
controller代码
import com.tencent.gateway.entity.Student;
import com.tencent.gateway.entity.User;
import com.tencent.gateway.entity.Users;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.beans.factory.annotation.Value;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/test")
public class TestController {
//方式1:对象中使用 @ConfigurationProperties 加载配置到对象属性中
@Autowired
private Student student;//配置文件对应的对象
@Autowired
private Users users;//配置文件对应的对象集合
@GetMapping("/test1")
public Object test1(){
System.out.println("方式1:@ConfigurationProperties 获取配置:");
System.out.println();
System.out.println(student.name);
System.out.println(student.age);
System.out.println(Arrays.toString(student.jobs));
System.out.println(Arrays.toString(student.loves));
System.out.println(Arrays.toString(student.books));
System.out.println(student.frands.toString());
System.out.println(student.familys.toString());
System.out.println(student.organ.toString());
System.out.println();
System.out.println("usersList:");
for (User user: users.user){
System.out.println(user.name);
System.out.println(user.age);
}
return "success";
}
//方式2:使用 Environment
@Autowired
Environment env;
@GetMapping("/test2")
public Object test2(){
System.out.println("方式2:Environment 获取配置:");
System.out.println();
System.out.println(env.getProperty("server.port"));
System.out.println(env.getProperty("student.name"));
System.out.println(env.getProperty("student.age"));
System.out.println(env.getProperty("student.jobs")); //获取不到
System.out.println(env.getProperty("student.loves")); //获取不到
System.out.println(env.getProperty("student.books")); // 可以获取
System.out.println(env.getProperty("student.frands")); //获取不到
System.out.println(env.getProperty("student.familys")); //获取不到
System.out.println(env.getProperty("student.organ")); // 可以获取
return "success";
}
//方式3:使用 @Value 映射 获取指定配置参数值, 冒号后的1111为默认值
@Value("${server.port:1111}")
private String port;
@Value("${student.name}")
public String name;
@Value("${student.age}")
private int age;
@Value("${student.jobs:}")
private String[] jobs;
@Value("${student.loves:}")
private String[] loves;
@Value("${student.books:}")
private String[] books;
@Value("${student.frands:a,a,a,a}")//冒号后指定默认值
private List<String> frands;
@Value("${student.familys:}")
private List<String> familys;
@Value("#{'${student.organ}'.split(',')}") //使用指定分割符分割字符串数组(部分字符不支持,比如 .)
private List<String> organ;
@Value("#{'${student.organ}'.split('#')}") //使用指定分割符分割字符串数组(部分字符不支持,比如 .)
private List<String> organ2;
@GetMapping("/test3")
public Object test3(){
System.out.println("方式3:@Value 映射 获取配置:");
System.out.println();
System.out.println(port);
System.out.println(name);
System.out.println(age);
System.out.println(Arrays.toString(jobs)); //获取不到
System.out.println(Arrays.toString(loves)); //获取不到
System.out.println(Arrays.toString(books)); // 可以获取
System.out.println(frands.toString()); //获取不到
System.out.println(familys.toString()); //获取不到
System.out.println();
System.out.println("organ:(逗号分割)");
System.out.println(organ.toString()); // 可以获取
for (String organSplit: organ){
System.out.println(organSplit);
}
System.out.println();
System.out.println("organ2:(号分割)");
System.out.println(organ2.toString()); // 可以获取
for (String organSplit: organ2){
System.out.println(organSplit);
}
return "success";
}
}
实体类
Student.java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
public String name;
public int age;
public String[] jobs;
public String[] loves;
public String[] books;
public List<String> frands;
public List<String> familys;
public List<String> organ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getJobs() {
return jobs;
}
public void setJobs(String[] jobs) {
this.jobs = jobs;
}
public String[] getLoves() {
return loves;
}
public void setLoves(String[] loves) {
this.loves = loves;
}
public List<String> getFrands() {
return frands;
}
public void setFrands(List<String> frands) {
this.frands = frands;
}
public List<String> getFamilys() {
return familys;
}
public void setFamilys(List<String> familys) {
this.familys = familys;
}
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
public List<String> getOrgan() {
return organ;
}
public void setOrgan(List<String> organ) {
this.organ = organ;
}
}
Users.java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "users")
public class Users {
public List<User> user; //自动将users.user下的所有数组封装到User对象集合中
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
}
User.java
public class User {
public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
方式一、
http://localhost:9801/test/test1
方式二、
http://localhost:9801/test/test2
方式三、
http://localhost:9801/test/test3
参考:
SpringBoot:yml文件详解-CSDN博客文章来源:https://www.toymoban.com/news/detail-743244.html
https://www.jb51.net/article/216769.htm文章来源地址https://www.toymoban.com/news/detail-743244.html
到了这里,关于springboot yml文件自定义配置的读取、使用 字符串 数组 对象 集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!