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

spring启动中的属性文件读取错误

佴飞驰
2023-03-14

下面是我在Spring引导应用程序中的yml文件

stack:
  apiContext: data-service
  domainOwner: trata
  domainContext: Madata-service
  #cluster:
   # servicePort: 12000
    #gossipPort: 13000
    #seedName: seed-service
   # seeds:
  #    - localhost:14000
  cluster:
    servicePort: 21000
    gossipPort: 15000
#    seedName: seed-service
    seeds:
      - localhost:13000
  providers:
    com.cloudimpl.out.collection.CollectionProvider:
      - name: MemCollection
        impl: com.cloudimpl.outstack.collection.MemCollectionProvider
        status: active

      - name: com.cloudimpl.outstack.collection.CollectionProvider
        impl: com.cloudimpl.outstack.collection.AwsCollectionProvider
        #        status: active
        configs:
          endpoint: http://localhost:1234
          leaderTable: LeaderTable
    com.cloudimpl.outstack.runtime.EventRepositoryFactory:
      - name: MemRepositoryFactory
        impl: com.cloudimpl.outstack.runtime.repo.MemEventRepositoryFactory


      - name: PostgresRepositoryFactory
        impl: com.cloudimpl.outstack.spring.repo.PostgresRepositoryFactory
        status: active
        configs:
          jdbcUrl: jdbc:postgresql://localhost:5432/test
          username: postgres
          password: QazWsx@1234
          defaultTable: masterdataService
          #UserTable: userTable
server:
  port: 9096
spring:
  main:
    web-application-type: reactive

低于值访问是工作文件

@Value("${outstack.domainOwner}")
private String abc;

但当我试图以下面的方式访问时,它会给出一个错误。

@Value("${outstack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory.name}")
private String abc;

我检查了只有在添加“com.cloudimpl.outstack.runtime.EventRepositoryFactory”这一部分时才会出现错误。

我怎样才能解决这个问题??

共有2个答案

凤修为
2023-03-14

首先,我看到的是stack.providers…不是outstack.providers…

您需要了解的第二件事是,stack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory包含元素数组。所以你的@值(…)将不起作用。

您可以创建一个单独的@ConfigurationProperties类,如下所示,

@Configuration
@ConfigurationProperties(prefix = "stack.providers.com.cloudimpl.outstack.runtime")
public class EvenConfigProperties {
    @JsonProperty("EventRepositoryFactory")
    private List<Config> eventRepositoryFactory;

    // getters and setters
}
public class Config {
    private String name;
    private String impl;
    // other parameters
    
    // getters and setters
}
尹善
2023-03-14

它不工作所以。您在"outstack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory"下具有值的列表。这意味着你可以像这样添加变量:

@Value("${outstack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory}")
private List<ParamWrapper> abc;

class ParamWrapper {

private String name;
private String impl;

....
getters and setters
}

然后检查列表中的参数。

 类似资料:
  • 我有一个限定词 限定符“jdbc”是定义为 这是返回该限定符的数据源并正常工作的。 现在,我想从应用程序中读取限定符名称。属性。所以我把代码改为 其中,数据库。连接器。在我的应用程序中,name=jdbc。属性。 但当我这样做的时候,这会产生一个错误 应用程序启动失败 说明: main中的字段userService。Java语言RestTestController需要“org”类型的bean。sp

  • 问题内容: 我创建了一个REST Web服务,在其中创建了config.properties文件来存储和检索整个应用程序中的一些用户名和密码。我将其存储在/src/main/resources/config.properties中。 当我尝试从eclipse的Java代码加载它时,它工作正常。但是当我将它部署在tomcat中时,它没有加载。我用来加载属性文件的代码是 谁能帮我解决这个问题 问题答案

  • 我必须从我的Spring启动项目的属性文件中读取一些字符串数组变量。我已经为数组创建了一个具有 getter 和 setter 方法的类。我不知道如何使用java 1.8从land.yml文件中获取这些字符串数组变量的值

  • 我正在尝试为我的sping-boot应用程序设置测试。在常规执行中,我从. env文件中获取一些值,这些值是我在运行配置中指定的,如下所示: 但当我尝试运行最简单的测试时,它会失败,但有一个例外: 加载Application Contextjava.lang.IllegalStateException失败:加载Application Context失败………原因:org.springframewo

  • 我试图只使用注释创建Spring bean。我无法从属性文件加载@Bean类的值。 下面是我的代码: 知道我做错了什么吗?

  • 我想创建一个集成测试,其中Spring Boot将使用@value注释从.properties文件读取一个值。 但每次运行测试时,我的断言都会失败,因为Spring无法读取该值: 我的测试: src/main/resource包下的application-test.properties包含: 这种行为的原因是什么?我该如何修复它? 任何帮助都非常感谢。