【问题标题】:How to read from application.yml file in Java如何从 Java 中的 application.yml 文件中读取
【发布时间】:2019-01-22 08:19:35
【问题描述】:

我写了一个电子邮件程序。但是我必须更改一些配置,所以在我的项目中我需要知道如何从 yaml 中读取我的 loginUrl

下面是我的代码;

userNotificationEmail.setIsActive("F");
                                userNotificationEmailRepository.save(userNotificationEmail);
                                activationResultType.setResultCode(ActivationResultCode.SUCCESSFUL);
                                activationResultType.setUser(userMapper.fromUser(userEntity));
                                activationResultType.setLoginUrl(loginUrl); 
                                return activationResultType;

【问题讨论】:

  • 你没有。只需在您的班级中注入 @Value("name-of-property") 即可。
  • 能不能写个简单的例子

标签: spring spring-mvc spring-boot yaml


【解决方案1】:

如果您的键是 loginUrl(在您的 yaml 文件中),您可以在 Spring 组件中使用 @Value 注释注入它的值。

@Value("${loginUrl}")
private String loginUrl;

如果是二级属性,则路径为@Value("${yourFirstKey.loginUrl}")

更多documentation about reading YAML files with Spring Boot.

【讨论】:

    【解决方案2】:

    你可以在你的类中注入:

    @Value("${propertie.name}") 
    String value;
    

    【讨论】:

      【解决方案3】:

      你可以在你的类中使用@Value 来注入值。

      @Value("${property.name}") 
      String propertyValue;
      

      您仍然无法访问价值...请考虑以下情况。

      YML 文件:

      authorization:
        server:
          baseUri: 'http://localhost:9090/'
      

      使用@Value("${authorization.server.base-uri}") 而不是@Value("${authorization.server.baseUri}") 来获取控制器内部的YML 值。

      根据 spring 文档,此处需要注意的关键点

      如果您确实想使用@Value,我们建议您使用其规范形式(kebab-case 仅使用小写字母)引用属性名称。这将允许 Spring Boot 使用与放松绑定 @ConfigurationProperties 时相同的逻辑。例如,@Value("{demo.item-price}") 将从 application.properties 文件中获取 demo.item-price 和 demo.itemPrice 表单,以及从系统环境中获取 DEMO_ITEMPRICE。如果您改用 @Value("{demo.itemPrice}"),则不会考虑 demo.item-price 和 DEMO_ITEMPRICE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-22
        • 2022-11-14
        • 2011-03-23
        相关资源
        最近更新 更多