SpringBoot读取yaml文件操作详解

2022-11-13 16:11:12 操作 读取 详解

1. 单个属性

yaml 内的属性如下:

server:
  port: 80

只需在成员变量上注解 @Value(“${属性名}”) 即可,用美元符号获取属性值

如下例:

@RestController
@RequestMapping("/")
public class DemoController {
    @Value("${server.port}")
    private String port;
    @GetMapping
    public String func() {
        return "server port: " + port;
    }
}

2. 全部属性

yaml 内的属性如下:

server:
  port: 80
logging:
  level: 
    root: warn

定义 Environment 成员变量,注解 @Autowired 即可,通过 .gerProperty(属性名) 函数来获取属性值

如下例:

@RestController
@RequestMapping("/")
public class DemoController {
    @Autowired
    private Environment environment;
    @GetMapping
    public String func() {
        String port = environment.getProperty("server.port");
        String level = environment.getProperty("logging.level.root");
        return "server port: " + port + "\n"
                + "logging level: " + level;
    }
}

3. 对象属性

yaml 内的属性如下:

mybook:
  name: 《SpringBoot入门》
  price: 28.00
  tags: [编程, Java, spring]

首先要定义一个 bean,给类注解 @Component 表示添加到 Spring 容器,注解 @ConfigurationProperties 设置属性 prefix 为配置中的对象名,如下例:

@Component
@ConfigurationProperties(prefix = "mybook")
public class Book {
    private String name;
    private Double price;
    private String[] tags;
	// 省略了成员方法
}

使用自动装配填充即可,如下例:

@RestController
@RequestMapping("/")
public class DemoController {
    @Autowired
    private Book book;
    @GetMapping
    public String func() {
        return book.toString();
    }
}

补充:

当有多个类注解 prefix 的值为同一个对象时,idea会报错 Duplicated prefix,但不影响项目运行

补充

在刚才自定义 bean 时,IDEA 会报一个警告 Spring Boot Configuration Annotation Processor not configured,显示在页面的顶部,这个警告不会影响项目运行

在 pom.xml 中添加下面的依赖就可以解决:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

到此这篇关于SpringBoot读取yaml文件操作详解的文章就介绍到这了,更多相关SpringBoot读取yaml内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关文章