当前位置: 首页 > 知识库问答 >
问题:

从application.yml/java读取应用程序变量(assoc数组),spring

余天宇
2023-03-14

我正在做一个Spring项目,我需要从应用程序yml文件中读取多个帐户凭据(登录和密码)。

我已将凭据编写为如下关联数组(我不知道更好的方法):

app:
  mail:
    accounts:
    - login: firstlogin
      password: firstpassword
    - login: secondlogin
      password: secondpassword

然后我用@Value注释将这些值映射到spring应用程序:

@Service
public class MyClass {
 
  @Values("${app.mail.accounts}")
  private List<Map<String, String>> accounts;

   ...
}

但是spring一直抛出异常,因为它无法读取这些值。

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException:
Could not resolve placeholder 'intelaw.mail.accounts' in value "${app.mail.accounts}"

共有1个答案

孔城
2023-03-14

在不改变application.yml的情况下,您可以调整数据结构并使其工作。

创建类帐户

class Account {
      private String login;
      private String password;

    //constructors, getters and setters here
}

并使用带有@ConfigurationProperties

@Component
@ConfigurationProperties("app.mail")
class MyClass {
   private List<Account> accounts = new ArrayList<>();
   //getters and setters here
}

在您的服务类中,您可以像这样使用它:

@Autowired
private MyClass myClass;

void someMethod() {
  myClass.getAccounts();
}
 类似资料:
  • 我有一个Jenkins的工作,在那里我执行了一个Groovy脚本。从那个Groovy脚本中,我向另一个应用程序发出POST请求。我的Jenkins服务器和应用程序在不同的机器上。我需要从应用程序的代码中访问Jenkins环境变量。这可能吗? 我尝试使用System.getenv("ENVIRONMUT-VARIABLE-NAME")方法检索环境变量,但返回的结果为null。

  • 我的应用程序有存储在applicaion.yml文件中的嵌套属性。 我希望在应用程序启动时将这些属性映射到POJO。 application.yml: 为了实现这一点,我使用了以下注释: @configuration @enableConfigurationProperties @configurationProperties(“demo”) 类演示: 主类 但是我在O/P下面: 步骤1 名称:D

  • 问题内容: 如何从JavaScript读取/访问JSP变量? 问题答案: 要么 或完整的例子 注意:在渲染输入之前先对其进行消毒,这可能会打开很多XSS可能性

  • 因此,我一直在试图弄清楚如何在两个应用程序中使用环境变量。属性或application.yaml。由于这在无数的框架中都能工作(例如Laravel),所以我认为这在Spring Boot中也能工作。现在我发现,情况并非如此。 我看到一篇关于Spring Environment API的帖子,它开始说环境变量SPRING_DATASOURCE_URL将等同于在我的应用程序中设置spring.data

  • 我的项目有一个依赖项,它需要一个可以由@value注释读取的set a properties对象: 为了在JavaConfig中实现这一点,我使用了以下内容: 是否可以将我的PropertiesFactoryBean配置为从Application.yml读取值?如果没有,是否有更简单的方法来使用JavaConfig配置属性?

  • 这是我的选项2选项 但它给出了一个错误的说法 java.io.FileNotFoundException:C:\users\businesssupport\documents\netBeansProjects\InvoiceGenerator\resources\hemaslogo.jpg(系统找不到指定的路径)