IntelliJ - Kan ikke løse egenskaper for konfigurasjon av fjærstartkonfigurasjon

1. Oversikt

Når vi injiserer runtime-egenskaper i vårapplikasjonene, kan vi definere bønneklasser for grupper med egendefinerte egenskaper.

IntelliJ gir hjelp og automatisk komplettering for de innebygde bønnene. Det trenger imidlertid litt hjelp til å skaffe disse til egendefinerte egenskaper.

I denne korte opplæringen vil vi se på hvordan du eksponerer disse egenskapene for IntelliJ for å gjøre utviklingsprosessen enklere.

2. Egendefinerte egenskaper

La oss ta en titt på skjermhjelpen som IntelliJ kan gi oss angående applikasjonens egenskaper:

Her, eiendommene url og tidsavbrudd i millisekunder er egendefinerte egenskaper. Vi kan se en beskrivelse, type og en valgfri standardverdi.

Men hvis en eiendom er ukjent, vil IntelliJ vise oss en advarsel:

Dette er fordi, uten metadata, kan IntelliJ ikke hjelpe oss.

La oss nå se på hva vi må gjøre for å fikse dette.

3. Avhengigheter

Først må vi legge til spring-boot-configuration-prosessor avhengighet til vår pom.xml:

 org.springframework.boot spring-boot-configuration-processor true 

De spring-boot-configuration-prosessor blir påkalt hver gang vi bygger prosjektet vårt. Det vil opprette metadatafilene i target / klasser / META-INF /.

Avhengigheten er merket som valgfri, noe som betyr at den ikke arves når noen bruker prosjektet vårt som en avhengighet.

Deretter får vi se hvor spring-boot-configuration-prosessor får informasjonen brukt til å opprette metadataene.

4. Konfigurasjonsmetadata med @ConfigurationProperties

Vi definerer egenskapene våre i en klasse som er merket med @ConfigurationProperties:

@Configuration @ConfigurationProperties (prefix = "com.baeldung") offentlig klasse CustomProperties {/ ** * URLen du skal koble til. * / String url; / ** * Tiden til å vente på tilkoblingen. * / private int timeoutInMilliSeconds = 1000; // Getters og Setters}

Her inneholder klassen eiendomsnavnene, typene og eventuelle standardinnstillinger gitt i initialiseringslisten. Javadoc gir også beskrivelser av hver eiendom.

Under en bygging, den merkeprosessor søker etter alle klasser som er merket med@ConfigurationProperties. Det genererer egendefinerte metadata for hver forekomstvariabel i klassen.

5. Konfigurasjonsmetadatafil

5.1. Format for metadatafilen

Metadatafilen som beskriver de egendefinerte egenskapene, driver kontekstuell hjelp i IntelliJ, for eksempel:

{"grupper": [{"name": "com.baeldung", "type": "com.baeldung.configuration.processor.CustomProperties", "sourceType": "com.baeldung.configuration.processor.CustomProperties"}] , "egenskaper": [{"name": "com.baeldung.url", "type": "java.lang.String", "description": "URLen du skal koble til.", "sourceType": "com .baeldung.configuration.processor.CustomProperties "}, {" name ":" com.baeldung.timeout-in-milli-seconds "," type ":" java.lang.Integer "," description ":" Tiden til vent på tilkoblingen. "," sourceType ":" com.baeldung.configuration.processor.CustomProperties "," defaultValue ": 1000}]," hints ": []}

Siden merkeprosessoren genererer denne filen for oss fra koden vår, er det ingen grunn til å se på eller redigere denne filen direkte.

5.2. Metadata Uten a ConfigurationProperties Bønne

Hvis vi har eksisterende eiendommer som ikke er introdusert av en @ConfigurationProperties, men fortsatt vil ha metadatafilen, så kan IntelliJ hjelpe.

La oss se nærmere på advarselen fra før:

Her ser vi en Definer konfigurasjonsnøkkel alternativet, som vi kan bruke til å lage et tilleggsfjær-konfigurasjon-metadata.json fil. Den opprettede filen vil se ut:

{"egenskaper": [{"name": "com.baeldung.timeoutInMilliSeconds", "type": "java.lang.String", "description": "Beskrivelse for com.baeldung.timeoutInMilliSeconds." }]}

Siden det ikke er informasjon om eiendommen fra noe annet sted, vi må manuelt redigere metadataene i den. Standaren type er alltids String.

La oss legge inn litt ekstra informasjon i filen:

{"egenskaper": [{"name": "com.baeldung.timeout-in-milli-seconds", "type": "java.lang.Integer", "description": "Tiden til å vente på tilkoblingen. "," sourceType ":" com.baeldung.configuration.processor.CustomProperties "," defaultValue ": 1000}]}

Merk at vi må gjenoppbygge prosjektet for å se at den nye eiendommen kommer opp automatisk.

Vi bør også merke oss at muligheten for å generere denne metadatafilen også er tilgjengelig via IntelliJs Alt + ENTER snarvei over en ukjent eiendom.

6. Konklusjon

I denne artikkelen så vi på hvordan IntelliJ bruker metadata for konfigurasjonsegenskapene for å gi hjelp til eiendomsfilene våre.

Vi så hvordan vi bruker Springs merkeprosessor for å generere metadataene fra egendefinerte klasser. Så så vi hvordan du bruker en snarvei i IntelliJ for å lage en metadatafil for å redigere manuelt.

Som alltid kan koden fra eksemplene i denne artikkelen finnes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found