Spring boot中获取application.yml配置
程序员文章站
2022-04-30 15:24:34
...
在实际开发中,我们会在把环境配置放到yml中那么我们如何获取yml的值呢。
先上3种yml
mavenDemo:
port: 80
mavenDemo1:
super:
port: 81
mavenDemo2:
List:
- port: 82
- port: 83
比如这种yml格式我们如何分别获取他们的值呢。
方式一:使用@Value注解的方式。
public class DemoProperties {
@Value("${mavenDemo.port}")
private Integer port;//读取yml的配置:80
@Value("${mavenDemo.port:8080}")
private Integer defaultPort;//也是读取yml的配置80,如果没有配置则使用默认值8080
@Value("${mavenDemo1.super.port}")
private Integer superPort;//读取mavenDemo->super->port配置81
@Value("${mavenDemo2.List[0].port}")
private Integer ListPort;//读取mavenDemo2中的List的第一个元素port的值:82
}
方式一:使用@ConfigurationProperties注解的方式。
mavenDemo:
port: 80
debugPort: 81
mavenDemo1:
List:
- port: 82
debugPort: 8282
- port: 83
debugPort: 8383
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = DemoProperties.PREFIX)
public class DemoProperties {
public static final String PREFIX = "mavenDemo";
private Integer port; //80
private Integer debugPort; //81
}
当我们要在代码中使用上面类时可以使用注入的方式
@Autowired
DemoProperties demoProperties ;
对于List的这种
@Data
@ConfigurationProperties(prefix = DemoProperties.PREFIX)
public class DemoProperties {
//这里要写yml的前缀
public static final String PREFIX = "mavenDemo1";
List<PortProperties> listProperties = new ArrayList();;
}
@Data
class PortProperties{
private Integer port;
private Integer debugPort;
}
更详细的可以参考这篇文章:https://juejin.im/post/5b0440a5f265da0b886dc2e9