Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Latest commit

 

History

History
89 lines (62 loc) · 4.86 KB

README.md

File metadata and controls

89 lines (62 loc) · 4.86 KB

Bygg

Quality Gate Status Lines of Code Coverage Bugs Vulnerabilities Security Rating

GitHub release (latest by date) GitHub

fp-konfig

Java/CDI basert bibliotek som brukes til å håndtere app konfigurasjon avhengig av kubernetes cluster og namespace applikasjonen kjører i.

Det er mulig å injecte en spesifikk variable i en konstruktor eller felt ved å bruke @KonfigVerdi annotering.

Bruk

Konfig kilder

Biblioteket leter etter konfig i følgende kilder og bruker første verdi fra kilden hvor den finnes.

Prioriteten på kilder er som følge:

  • Applikasjons properties med cluster og namespace (application-prod-fss-default.properties)
  • Applikasjons properties med cluster (application-prod-fss.properties)
  • Applikasjons properties (application.properties)
  • Miljø variabler (generelt alt som finnes i System.getenv())
  • System properties (generelt alt som finnes i System.getProperties())

For kjøring utenfor kubernetes f.eks. fra IDE defaultes cluster navn til "local" og namespace til verdi satt i System.getProperty("app.name"); Dvs at man kan nå properties under application.properties, application-lokal.properties og application-lokal-<app.name>.properties

Det er mulig å plugge inn en egen provider ved å implementere PropertiesKonfigVerdiProvider klassen.

Løsningen er CDI basert.

Bruk av @KonfigVerdi

Det er mulig å direkte @Injecte konfig som trenger ved å bruke @KonfigVerdi annotering i konstruktor eller direkte på et attribut. Minimum oppsett:

  • @KonfigVerdi(value = "min.property") String minProperty
  • @KonfigVerdi(value = "min.property", required=false) String minProperty - kaster ikke exception om verdien ikke finnes.
  • @KonfigVerdi(value = "min.property", defaultVeidi="default konfig verdi") String minProperty - returnerer default verdi om verdien ikke finnes i konfig.
  •   @KonfigVerdi(value = "min.property")
      private String minProperty
    
    

Det er mulig å hente konfig direkte fra koden ved å kalle getProperty eller getRequiredProperty fra Environment klassen:

  • Environment.current().getProperty("min.property") - returnerer en String eller null om det ikke finnes.
  • Environment.current().getProperty("min.property", Integer.class) - returnerer en Integer, null om det ikke finnes eller Exception om ikke integer.
  • Environment.current().getRequiredProperty("min.property") - returnerer en String, eller Exception om verdien ikke finnes.

Følgende typer støttes og kan bli returnert:

  • String (default)
  • Boolean / boolean
  • Integer / int
  • Period
  • Duration
  • LocalDate
  • Long
  • URI
  • URL

Bruk eksempler

  • @KonfigVerdi(value = "test.enabled", required = false) boolean enabled == Environment.current().getProperty("test.enabled", integer.class)
  • @KonfigVerdi(value = "bruker.navn" String bruker == Environment.current().getProperty("bruker.navn")
  • @KonfigVerdi(value = "periode.fp") Period periode == Environment.current().getProperty("periode.fp", Period.class)
  • @KonfigVerdi(value = HENDELSE_BASE_ENDPOINT, defaultValue=DEFAULT_BASE_ENDPOINT) URI baseEndpoint == Environment.current().getProperty(HENDELSE_BASE_ENDPOINT, URI.class, DEFAULT_BASE_ENDPOINT)

Utilities

  • Environment - statisk klasse som gir informasjon om miljøet appen kjører i.
  • Cluster - statisk klasse med info om clusteret appen kjører i f.eks: isProd(), isDev(), isLocal(), etc.
  • Namespace - statisk klasse som leverer egenskaper om namespacet appen kjører i f.eks: getName()
  • Application - statisk klasse som leverer injisert navn på applikasjon: getName()
  • ClienId - statisk klasse som leverer egenskaper om clientId for appen: getClientId()

Lisens

MIT