在实际开发中,我们会在把环境配置放到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;
}

更详细的可以参考这篇文章:springboot读取配置文件 - 掘金

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐