Di bawah ini adalah file yml saya di aplikasi boot musim semi

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

Di bawah nilai akses adalah file yang berfungsi

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

Tetapi ketika saya mencoba mengakses dengan cara di bawah ini, itu memberikan kesalahan.

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

Saya memeriksanya memberikan kesalahan hanya ketika menambahkan "com.cloudimpl.outstack.runtime.EventRepositoryFactory" bagian ini.

Bagaimana saya bisa memecahkan masalah ini??

0
dasitha 30 September 2021, 16:50

2 jawaban

Jawaban Terbaik

Ini tidak bekerja begitu. Anda memiliki daftar dengan nilai di bawah "outstack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory". Ini berarti Anda dapat menambahkan variabel seperti:

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

class ParamWrapper {

private String name;
private String impl;

....
getters and setters
}

Dan kemudian periksa params Anda di daftar ini.

3
Aleks D 30 September 2021, 14:28

Hal pertama adalah, saya melihat stack.providers... bukan outstack.providers...

Hal kedua yang perlu Anda pahami adalah, stack.providers.com.cloudimpl.outstack.runtime.EventRepositoryFactory berisi array elemen. Jadi @Value(...) Anda tidak akan berfungsi.

Yang dapat Anda lakukan adalah membuat kelas @ConfigurationProperties terpisah sebagai berikut,

@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
}
0
ray 30 September 2021, 16:49