yml 文件怎么读取配置信息的
时间: 2023-06-23 14:46:36 浏览: 174
基于Python和PyYAML读取yaml配置文件数据
在Java中,我们可以使用Spring框架提供的Yaml工具类来读取Yaml文件中的配置信息。以下是读取Yaml文件的示例代码:
1. 依赖添加
如果你使用的是Maven,可以在pom.xml文件中添加如下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-yaml</artifactId>
</dependency>
```
2. 读取Yaml文件
假设我们有一个名为config.yml的Yaml文件,包含如下内容:
```yml
server:
port: 8080
context-path: /demo
database:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: 123456
```
我们可以使用以下代码将上述Yaml文件中的配置信息读取到一个Map对象中:
```java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.Map;
@Component
@PropertySource(value = "classpath:config.yml", factory = YamlPropertySourceFactory.class)
public class Config {
@Value("${server.port}")
private int port;
@Value("${server.context-path}")
private String contextPath;
@Value("${database.url}")
private String databaseUrl;
@Value("${database.username}")
private String databaseUsername;
@Value("${database.password}")
private String databasePassword;
public int getPort() {
return port;
}
public String getContextPath() {
return contextPath;
}
public String getDatabaseUrl() {
return databaseUrl;
}
public String getDatabaseUsername() {
return databaseUsername;
}
public String getDatabasePassword() {
return databasePassword;
}
public static class YamlPropertySourceFactory extends DefaultPropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
if (resource == null) {
return super.createPropertySource(name, resource);
}
Yaml yaml = new Yaml();
try (InputStream inputStream = resource.getInputStream()) {
Map<String, Object> map = yaml.load(inputStream);
String sourceName = name != null ? name : resource.getResource().getFilename();
return new MapPropertySource(sourceName, map);
}
}
}
}
```
上述代码中,我们首先定义了一个名为Config的类,并使用@Component注解将其声明为Spring组件。然后,我们在该类中定义了一些实例变量,用于存储Yaml文件中的配置信息。在实例变量上,我们使用@Value注解来指定对应的配置项,例如${server.port}表示读取server.port配置项的值,并将其赋值给port实例变量。最后,我们定义了一个名为YamlPropertySourceFactory的内部类,用于读取Yaml文件并将其转换成Map对象。在这个内部类中,我们使用了SnakeYAML库来读取Yaml文件,并将其转换成Map对象。
为了在应用程序中使用Config类中的实例变量,我们可以使用@Autowired注解将其注入到其他Spring组件中,例如Controller、Service等。
总的来说,使用Spring框架提供的Yaml工具类能够很方便地读取Yaml文件中的配置信息,并将其转换成Java对象。
阅读全文