欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

相关标签: spring boot